16.2 為什麼 %f 可以在 printf() 參數中, 同時表示 float 和  double?他們難道不是不同類型嗎?

``參數默認晉級" 規則適用於在可變參數中的可變動部分: char 和  short int 晉級到 int, float 晉級到 double。 同樣的晉級也適用於在作用域中沒有原型說明的函數調用, 即所謂的 ``舊風格" 函數 調用, 參見問題 11.4。所以 printf 的 %f 格式總是得到  double。類似的, %c 總是得到 int, %hd 也是。 參見問題 12.7, 12.13

參考資料: [ISO, Sec. 6.3.2.2]; [H&S, Sec. 6.3.5 p. 177, Sec. 9.4 pp. 272-3]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)