12/08/03 12:58:08.12
>>685
俺が根拠にしてるのは JIS なんだが、そこでの記述はこうなってる。
> 呼び出される関数を表す式が、関数原型を含まない型をもつ場合、
> 各実引数に対して整数拡張を行い、型 float をもつ実引数は型 double に拡張する。
日本語でもかなりわかりにく表現だな。
... で終わる宣言がプロトタイプを含まない宣言なのであるとすれば、
void hoge(float a, ...);
という宣言に対して
hoge(1.23f, 1);
と呼び出した場合でもこの 1.23f は一旦 double に拡張されるってことにならないか?
それも変な話だと思う。
更に読み進めていくと
> 関数原型宣言子における省略記号標記は、
> 最後に宣言されている仮引数の直後から実引数の型変換を止める。
> 残りの実引数に対しては、規定の実引数拡張を行う。
とあるので printf に渡した第二引数以降は型変換しないということだでいいんじゃないかな。