Adakah Fungsi Variadic dalam C dan C Secara Automatik Menggalakkan Terapung menjadi Berganda?

Patricia Arquette
Lepaskan: 2024-11-16 04:13:02
asal
622 orang telah melayarinya

Do Variadic Functions in C and C   Automatically Promote Floats to Doubles?

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.
Salin selepas log masuk

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.
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan