Rumah >pembangunan bahagian belakang >C++ >Adakah Terdapat Fungsi Tanda Standard dalam C/C untuk Menentukan Tanda Nilai Berangka?

Adakah Terdapat Fungsi Tanda Standard dalam C/C untuk Menentukan Tanda Nilai Berangka?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 06:52:12810semak imbas

Is There a Standard Sign Function in C/C   for Determining the Sign of Numerical Values?

Menentukan Tanda Nilai Berangka dalam C/C

Dalam pengaturcaraan, menentukan tanda nilai berangka ( 1 untuk positif, -1 untuk negatif) adalah operasi biasa. Walaupun mungkin untuk melaksanakan fungsi pengiraan tanda tersuai, seseorang mungkin tertanya-tanya sama ada terdapat penyelesaian piawai.

Fungsi Tanda Piawai dalam C/C

Tidak, terdapat tiada fungsi tanda piawai yang disediakan oleh perpustakaan standard C atau C khusus untuk berangka jenis.

Pilihan Alternatif untuk Pengiraan Tanda Terapung

Walaupun tiada fungsi tanda khusus, terdapat kaedah alternatif untuk mengira tanda nombor titik terapung. Satu pendekatan popular menggunakan fungsi copysign, yang mengembalikan nilai baharu dengan nilai mutlak nombor yang disediakan dan tanda nombor lain yang ditentukan. Sebagai contoh, anda boleh menggunakannya seperti berikut:

#include <math.h>
int sign(float val) {
  return copysign(1.0f, val);
}

Fungsi Tanda Jenis-Selamat C

Penyelesaian yang lebih selamat jenis dan mudah alih adalah untuk menentukan generik fungsi tanda menggunakan templat:

template <typename T>
int sgn(T val) {
  return (T(0) < val) - (val < T(0));
}

Fungsi ini berfungsi untuk sebarang jenis yang boleh dibandingkan dengan sifar dan menyokong kedua-dua tandatangan dan jenis yang tidak ditandatangani.

Faedah dan Kaveat

Fungsi sgn adalah cekap, mematuhi piawaian dan tepat. Walau bagaimanapun, ia adalah templat, yang mungkin memperkenalkan overhed masa kompilasi dalam senario tertentu.

Atas ialah kandungan terperinci Adakah Terdapat Fungsi Tanda Standard dalam C/C untuk Menentukan Tanda Nilai Berangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn