首頁 > 後端開發 > C++ > C 和 C 中的可變參數函數是否會自動將浮點型提升為雙精度型?

C 和 C 中的可變參數函數是否會自動將浮點型提升為雙精度型?

Patricia Arquette
發布: 2024-11-16 04:13:02
原創
713 人瀏覽過

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

可變參數函數中的浮點提升

可變參數函數允許傳遞可變數量的不同類型的參數。在 C 和 C 中,當嘗試將浮點參數傳遞給像 printf() 這樣的可變參數函數時,會出現一種特殊的行為。與直覺相反,浮點型在被函數接收之前會被提升為雙精度型。

可變參數函數會自動提升浮點數嗎?

是的,C 語言中的可變參數函數C 會自動將 float 參數提升為 double。此行為在語言標準中定義:

C99(草稿):

Arguments that have type float are promoted to double. These are called the default argument promotions.
登入後複製

C(草稿)​​:

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.
登入後複製

C(草稿)​​:

C(草稿)​​:

保留此促銷是為了與C 的歷史版本相容。儘管存在潛在缺點,但它仍然是預設值C99 和 C 中的行為。 printf() 的意思在 printf() 的情況下,出現這種現像是因為 printf() 期望格式說明符和參數匹配。由於雙精度型和浮點型的格式說明符不同,因此將浮點型參數提升為雙精度型以滿足函數的要求。這確保了相容性並簡化了浮點參數的處理。

以上是C 和 C 中的可變參數函數是否會自動將浮點型提升為雙精度型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板