首頁 > 後端開發 > C++ > 主體

為什麼 printf() 和其他可變參數函數中的浮點參數提升為 Double?

DDD
發布: 2024-11-19 08:22:02
原創
939 人瀏覽過

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

在printf() 中將Float 參數提升為Double

在先前的討論中,注意到當將float 傳遞給printf 時(),在被函數使用之前會被提升為double。此行為並非特定於 printf(),而是特定於所有可變參數函數。

在沒有原型聲明的情況下,C 和 C 中的所有參數提升都會按照 K&R C 標準中的定義進行。這包括將 float 參數提升為 double,即使不需要。

可變參數函數參數提升

根據C99 標準(第6.5.2.2 節),參數float 類型的類型在傳遞到可變參數函數之前會提升為double。同樣,C 標準(第 5.2.2 節)規定,浮點參數在函數呼叫之前轉換為提升類型(double)。

cppreference 清楚概述了 C 中可變參數函數的預設轉換,包括將 float 參數轉換為 double。

與K&R 的兼容性C

在C 和C 中保留了可變參數函數中float 參數到double 的提升,以便與原始K&R C 標準相容。儘管擔心資料遺失的可能性,但為了向後相容,這種轉換仍然存在。

以上是為什麼 printf() 和其他可變參數函數中的浮點參數提升為 Double?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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