Rumah >pembangunan bahagian belakang >C++ >Adakah Semua Fungsi Variadik Menggalakkan Argumen Terapung menjadi Berganda?
Fungsi Variadik Promosi Argumen Terapung kepada Berganda dalam printf()
Dalam C dan C , fungsi printf() ialah fungsi variadik yang memerlukan bilangan argumen yang berubah-ubah. Satu tingkah laku pelik printf() ialah apabila hujah apungan diluluskan, ia ditukar kepada dua kali ganda sebelum fungsi menerimanya. Ini menimbulkan persoalan: adakah semua fungsi variadic menggalakkan argumen apungan menjadi dua kali ganda?
Jawapan:
Ya, fungsi variadik dalam C dan C menggalakkan argumen apungan menjadi dua kali ganda.
Justifikasi:
Tingkah laku ini dinyatakan dalam kedua-dua piawaian C99 dan C. Draf standard C99 menentukan bahawa "argumen yang mempunyai jenis apungan dinaikkan pangkat kepada dua kali ganda" untuk fungsi variadik. Begitu juga, piawaian C menyatakan bahawa "jenis titik terapung yang tertakluk kepada promosi titik terapung, nilai hujah ditukar kepada jenis digalakkan sebelum panggilan."
Rasional di sebalik promosi ini adalah untuk mengekalkan keserasian dengan piawaian K&R C, yang memerlukan hujah apungan dipromosikan menjadi dua kali ganda sekiranya tiada pengisytiharan prototaip. Walaupun tidak selalu diingini, keserasian ini dikekalkan atas sebab keserasian ke belakang.
Atas ialah kandungan terperinci Adakah Semua Fungsi Variadik Menggalakkan Argumen Terapung menjadi Berganda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!