Adakah Fungsi Tanda merupakan Kemasukan Standard dalam C/C ?
Dalam mengejar fungsi yang secara jelas mengembalikan -1 untuk nombor negatif dan 1 untuk nombor positif, soalan semula jadi timbul: adakah fungsi ini wujud secara asli dalam piawaian C/C perpustakaan?
Menyelam ke dalam Jawapan
Untuk mengecewakan awal pengaturcara, perpustakaan standard C/C tidak secara eksplisit menyertakan fungsi "signum" atau "sgn" memenuhi tujuan ini. Walau bagaimanapun, seperti yang ditunjukkan oleh penyelesaian yang disediakan, penyelesaian wujud menggunakan fungsi C selamat jenis:
template <typename T> int sgn(T val) {
return (T(0) < val) - (val < T(0));
}
Kelebihan Pendekatan ini:
Fungsi templat ini menawarkan beberapa faedah:
-
Pelaksanaan Signum Tepat: Ia mengembalikan -1, 0 atau 1, mematuhi takrifan sebenar tanda.
-
Kepelbagaian: Ia boleh digunakan pada pelbagai jenis data, termasuk integer, terapung, beregu, seluar pendek tidak bertanda , dan jenis tersuai.
-
Pelaksanaan Cekap: Templat mengelak panggilan copysign perlahan, mengoptimumkan prestasi melalui kod tanpa cawangan.
-
Pematuhan Standard: Tidak seperti alternatif peralihan bit, ia kekal konsisten dengan semua perwakilan bit.
-
Tinggi- Pemeliharaan Ketepatan: Ia mengekalkan perwakilan ketepatan tinggi dalaman mesin, menghalang pembundaran pramatang ralat.
Kaveat Berpotensi:
-
Masa Penyusunan: Sebagai templat, ia mungkin mengambil masa yang lebih lama untuk menyusun dalam tertentu konteks.
-
Melebihi Pertimbangan: Untuk yang tidak ditandatangani jenis, kod menjana amaran yang boleh diperbetulkan menggunakan lebihan beban.
Atas ialah kandungan terperinci Adakah C/C asli menyertakan fungsi tanda?. 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