在可變參數函數中將Float 參數提升為Double
在先前的討論中,注意到printf() 將float 參數提升為在接受之前加倍。這就提出了一個問題:所有可變參數函數都執行此提升嗎?
可變參數提升
是的,根據 C99 和 C 標準,浮點參數傳遞給可變參數功能提升為雙倍。
標準規範
cppreference 提供C 中可變參數函數預設轉換的摘要:
std::nullptr_t 到void*std::nullptr_t 到void*bool、char的整數提升、短和枚舉
起源促銷
儘管存在潛在的缺點,但此促銷是為了與K&R C 標準兼容而在C中引入的。正如C 基本原理所述:「為了與過去的實踐相容,在沒有原型聲明的情況下,所有參數提升都按照K&R 中的描述進行,包括並不總是理想的將浮點數提升為雙倍。以上是所有可變參數函數都會將'float”參數提升為'double”嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!