intを返すように宣言された関数は何も返しません。 これは未定義の動作ですか?

c++ function undefined-behavior
intを返すように宣言された関数は何も返しません。 これは未定義の動作ですか?

これはC ++の有効な関数です。

int f()
{
   if(false)
   {
      return 42;
   }
}

次の定義によりUBが発生します。

int x = f(); //return value used

*質問:*次の式ステートメントはUBを引き起こしますか?

f();

標準からの引用は大歓迎です。 ありがとう

*警告:*文体についての注意は無関係です:)

  6  1


ベストアンサー

C ++ 03§6.6.3/ 2:

関数の末尾から流れ出ることは、値のないリターンと同じです。その結果、値を返す関数の動作が未定義になります。

したがって、これは関数自体のUBです。

BTW gccは、このUBを指す警告を表示します。

In function 'int f()':
Line 7: warning: control reaches end of non-void function

8


C ++ 03、§6.6.3/ 2:「関数の末尾からのフローは、値なしの戻り値と同等です。これにより、値を返す関数で未定義の動作が発生します。」

Cでも同じではないことに注意してください。

3


タイトルとURLをコピーしました