08/03/24 23:28:06
>>15
関数を呼び出す側が正しい引数を渡すものとしていた
引数について型変換が行われないのでキャストも必要だった
例として
sqrt(2);
の時
プロトタイプ宣言があれば 2 → 2.0 に変換して渡してくれるが
プロトタイプ宣言が無い場合 2 (整数)のままで渡されるので期待した返値が得られない
可変長引数関数は今でも型チェックができないので同じ問題がある
(標準関数についてだけは警告を出してくれるコンパイラもある)
printf("%f\n", 2);
printf("%f\n", 2.0);