15

特に、以下は明確に定義されていますか、それとも未定義の動作を示していますか?

memcmp(0, 0, 0);

これは C と C++ で異なりますか? 理想的には、標準からの見積もりを提供してください。

4

2 に答える 2

33

特に、以下は明確に定義されていますか、それとも未定義の動作を示していますか?

未定義です。C99 7.21.1/2 は、すべての文字列関数について次のように述べています。

この副次節の特定の関数の説明で特に明記されていない限り、そのような呼び出しのポインター引数は引き続き有効な値を持つものとします。

また、7.21.4.1の説明ではmemcmp、明示的に別のことを述べていません。

これは C と C++ で異なりますか?

いいえ、C++ は C ライブラリ関数の定義を C に委ねており、memcmp.

于 2013-05-03T15:55:55.693 に答える