16.9 我有個接受 float 的可變參函數, 為什麼  va_arg(argp, float) 不工作?

``參數默認晉級" 規則適用於在可變參數中的可變動部分: 參數類型為 float 的總是晉級 (擴展) 到 double, char 和 short int 晉級到 int。所以  va_arg(arpg, float) 是錯誤的用法。應該總是用  va_arg(arpg, double)。 同理, 要用 va_arg(argp, int) 來取得原來類型是 char, short 或 int 的參數。 基於相同理由, 傳給 va_start() 的最後一個 ``固定" 參數項 的類型不會被晉級。參見問題 11.4 和 15.2

參考資料: [ISO, Sec. 6.3.2.2]; [Rationale, Sec. 4.8.1.2]; [H&S, Sec. 11.4 p. 297]。

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