Promosi Argumen Terapung menjadi Berganda dalam printf()
Dalam perbincangan sebelum ini, diperhatikan bahawa apabila apungan dihantar ke printf (), ia dinaikkan kepada dua kali ganda sebelum digunakan oleh fungsi. Tingkah laku ini tidak khusus untuk printf() tetapi sebaliknya kepada semua fungsi variadic.
Jika tiada pengisytiharan prototaip, semua promosi argumen dalam C dan C berlaku seperti yang ditakrifkan dalam standard K&R C. Ini termasuk promosi argumen apungan untuk menggandakan, walaupun apabila tidak diingini.
Promosi Argumen Fungsi Variadik
Mengikut piawaian C99 (Seksyen 6.5.2.2), hujah jenis apungan dinaikkan kepada dua kali ganda sebelum dihantar ke fungsi variadic. Begitu juga, piawai C (Bahagian 5.2.2) menyatakan bahawa argumen titik terapung ditukar kepada jenis digalakkan (berganda) sebelum panggilan fungsi.
cppreference menyediakan gambaran keseluruhan yang jelas tentang penukaran lalai untuk fungsi variadik dalam C , termasuk penukaran argumen apungan kepada berganda.
Keserasian dengan K&R C
Promosi argumen apungan kepada menggandakan dalam fungsi variadik dikekalkan dalam C dan C untuk keserasian dengan piawaian K&R C yang asal. Walaupun terdapat kebimbangan tentang potensi kehilangan data, penukaran ini kekal untuk keserasian ke belakang.
Atas ialah kandungan terperinci Mengapa Argumen Terapung Dipromosikan kepada Berganda dalam printf() dan Fungsi Variadik Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!