Rumah >pembangunan bahagian belakang >C++ >Adakah Semua Fungsi Variadik Menggalakkan Argumen Terapung menjadi Berganda?

Adakah Semua Fungsi Variadik Menggalakkan Argumen Terapung menjadi Berganda?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 00:06:02571semak imbas

Do All Variadic Functions Promote Float Arguments to Double?

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!

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