首頁 >後端開發 >C++ >所有可變參數函數都會將'float”參數提升為'double”嗎?

所有可變參數函數都會將'float”參數提升為'double”嗎?

Barbara Streisand
Barbara Streisand原創
2024-11-23 06:21:16707瀏覽

Do All Variadic Functions Promote `float` Arguments to `double`?

在可變參數函數中將Float 參數提升為Double

在先前的討論中,注意到printf() 將float 參數提升為在接受之前加倍。這就提出了一個問題:所有可變參數函數都執行此提升嗎?

可變參數提升

是的,根據 C99 和 C 標準,浮點參數傳遞給可變參數功能提升為雙倍。

標準規範

  • C99(第6.5.2.2 節):「具有float 類型的參數將提升為double。」
  • C (第5.2.2節):「浮點類型...在"
  • C(第4.6 節):「float 類型的純右值可以轉換為double 類型的純右值。 cppreference

cppreference 提供C 中可變參數函數預設轉換的摘要:

std::nullptr_t 到void*

std::nullptr_t 到void*
  • std::nullptr_t 到void*
  • std::nullptr_t 到void*
  • std::nullptr_t 到void*
std::nullptr_t 🎜>

bool、char的整數提升、短和枚舉

起源促銷

儘管存在潛在的缺點,但此促銷是為了與K&R C 標準兼容而在C中引入的。正如C 基本原理所述:「為了與過去的實踐相容,在沒有原型聲明的情況下,所有參數提升都按照K&R 中的描述進行,包括並不總是理想的將浮點數提升為雙倍。

以上是所有可變參數函數都會將'float”參數提升為'double”嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn