Promosi Terapung dalam Fungsi Variadik
Fungsi variadik membenarkan untuk menghantar bilangan argumen yang berubah-ubah daripada jenis yang berbeza. Dalam C dan C , tingkah laku pelik berlaku apabila cuba menghantar hujah apungan kepada fungsi variadik seperti printf(). Bertentangan dengan gerak hati, apungan dinaikkan kepada dua kali ganda sebelum diterima oleh fungsi.
Adakah Fungsi Variadic Auto-Promote Terapung?
Ya, fungsi variadic dalam C dan C secara automatik mempromosikan hujah apungan untuk menggandakan. Tingkah laku ini ditakrifkan dalam piawaian bahasa:
C99 (draf):
Arguments that have type float are promoted to double. These are called the default argument promotions.
C (draf):
A floating point type that is subject to the floating point promotion, the value of the argument is converted to the promoted type before the call.
Promosi ini dikekalkan untuk keserasian dengan versi sejarah C. Walaupun terdapat potensi kelemahan, ia kekal sebagai tingkah laku lalai dalam C99 dan C .
Implikasi untuk printf()
Dalam kes printf(), fenomena itu timbul kerana printf() menjangkakan penentu format dan hujah sepadan. Memandangkan penentu format untuk beregu dan terapung adalah berbeza, hujah apungan dinaikkan pangkat kepada gandaan untuk memenuhi keperluan fungsi. Ini memastikan keserasian dan memudahkan pengendalian hujah titik terapung.
Atas ialah kandungan terperinci Adakah Fungsi Variadic dalam C dan C Secara Automatik Menggalakkan Terapung menjadi Berganda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!