2

次のように定義された C の関数があるとします。

bool check ( int x, int y);

今、私がそれを呼び出すとcheck(4);

y取られる値はどうなりますか?

4

1 に答える 1

7

このようなコードは、関数が宣言されていない (C89/90) か、プロトタイプなしで宣言されている (C89/90 および C99) 場合にのみコンパイルできる可能性があります。

いずれにせよ、動作は未定義になります。呼び出しで使用される昇格された引数の数や型が関数定義で使用されるものと一致しない場合、動作は未定義です。

6.5.2.2 関数呼び出し

6 [...]引数の数がパラメーターの数と等しくない場合、動作は未定義です[...]関数がプロトタイプを含まない型で定義され、その後の引数の型がプロモーションは、プロモーション後のパラメーターのものと互換性がありません。動作は未定義です

于 2012-07-27T19:55:59.463 に答える