Rumah > pembangunan bahagian belakang > C++ > Mengapa Argumen Terapung Dipromosikan kepada Berganda dalam printf() dan Fungsi Variadik Lain?

Mengapa Argumen Terapung Dipromosikan kepada Berganda dalam printf() dan Fungsi Variadik Lain?

DDD
Lepaskan: 2024-11-19 08:22:02
asal
981 orang telah melayarinya

Why Are Float Arguments Promoted to Double in printf() and Other Variadic Functions?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan