名前空間
変種
操作

return 文

提供: cppreference.com
< c‎ | language

現在の関数を終了し、指定された値を呼び出し元の関数に返します。

目次

[編集] 構文

return expression ; (1)
return ; (2)

[編集] 説明

1) expression を評価し、現在の関数を終了し、その expression の結果を呼び出し元に返します (返された値は関数呼び出し式の値になります)。 関数の戻り値の型が void でない場合にのみ有効です。
2) 現在の関数を終了します。 関数の戻り値の型が void の場合にのみ有効です。

expression の型がその関数の戻り値の型と異なる場合は、オプジェクト表現間のオーバーラップが許されることを除き、その関数の戻り値の型のオブジェクトへの代入によって行われたかのように、その値が変換されます。

struct s { double i; } f(void); // struct s を返す関数
union { struct { int f1; struct s f2; } u1;
        struct { struct s f3; int f4; } u2; } g;
struct s f(void)
{
    return g.u1.f2;
}
int main(void)
{
// g.u2.f3 = g.u1.f2; // 未定義動作 (代入のオーバーラップ)
   g.u2.f3 = f();     // well-defined
}

戻り値の型が実数の浮動小数点型の場合、結果は新しい型によって課されるより大きな範囲と精度で表現されることがあります。

main 以外の関数の終わりへの到達は return; と同等です。 main については main 関数を参照してください。 それ以外の値を返す関数の終わりへの到達は未定義動作ですが、その関数の結果が式で使用された場合だけです。

戻らない関数における return 文の実行は未定義動作です。

[編集] キーワード

return

[編集]

#include <stdio.h>
 
void fa(int i)
{
    if (i == 2)
       return;
    printf("fa():   %d\n", i);
} // 暗黙の return;
 
int fb(int i)
{
    if (i > 4)
       return 4;
    printf("fb():   %d\n", i);
    return 2;
}
 
int main(void)
{
    fa(2);
    fa(1);
    int i = fb(5);   // 戻り値 4 が i を初期化するために使用されます。
    i = fb(i);       // 戻り値 2 が代入の右辺として使用されます。
    printf("main(): %d\n", i);
}

出力:

fa():   1
fb():   4
main(): 2

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 6.8.6.4 The return statement (p: 154)
  • C99 standard (ISO/IEC 9899:1999):
  • 6.8.6.4 The return statement (p: 139)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 3.6.6.4 The return statement

[編集] 関連項目

return 文C++リファレンス