在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中文網其他相關文章!