法大奥山研究室

 previous  contents

8.5. 規定の実引数拡張


 引数を一切とらないのであれば,

double f(void);

のように,仮引数の型に void を指定したプロトタイプ宣言を行います。[C99, 6.7.5.3, 10]

 これに対し,仮引数の型を全く指定しない宣言

double f();

は「引数をとらない」という意味にはなりません。これは,引数の型が不明という意味になります。このような場合に関数呼出しをすると,不明な箇所に代入された変数のすべてに整数拡張が施され,浮動小数点型の引数は double型に変換されます。この暗黙の型変換を規定の実引数拡張(Default Argument Promotions)と言います。[C99, 6.5.2.2, 6] 関数の定義は,この型変換に符合させる必要があります。

double f(int x, int y)
{
       // 処理
}

 previous  contents