- 06|10/2020
- 読むのに4分
-
- c
- n
- n
- m
- g
- s
areturn
return
ステートメントは、呼び出し元の関数に値を返すことができます。 詳細については、”戻り値の型”を参照してください。
構文
jump-statement:
return
expressionopt;
expressionの値は、存在する場合、関数を呼び出す。 Expressionが省略された場合、関数の戻り値は未定義です。 式が存在する場合は、評価され、関数によって返される型に変換されます。 return
void
戻り値の型を持つ関数内の式が含まれている場合、コンパイラは警告を生成し、式は評価されません。
return
void
void
return
void
戻り値の型を持つように宣言します。 戻り値の型が指定されていない場合、Cコンパイラはint
のデフォルトの戻り値の型を想定します。
多くのプログラマは、return
ステートメントの式引数を囲むために括弧を使用します。 ただし、Cは括弧を必要としません。
コンパイラは、return
ステートメントの後に置かれたステートメントを検出すると、到達不能コードに関する警告診断メッセージを発行することがp>
main
return
ステートメントと式はオプションです。 戻り値が指定されている場合、戻り値に何が起こるかは実装によって異なります。 Microsoft固有:Microsoft Cの実装は、cmd.exe
return
式が指定されていない場合、Microsoft Cランタイムは成功(0)または失敗(ゼロ以外の値)を示す値を返します。
例
この例は、いくつかの部分で一つのプログラムです。 これは、return
ステートメントと、関数の実行を終了するため、および必要に応じて値を返すために使用される方法を示しています。
// C_return_statement.c// Compile using: cl /W4 C_return_statement.c#include <limits.h> // for INT_MAX#include <stdio.h> // for printflong long square( int value ){ // Cast one operand to long long to force the // expression to be evaluated as type long long. // Note that parentheses around the return expression // are allowed, but not required here. return ( value * (long long) value );}
square
関数は、算術エラーを防ぐために、より広い型で、その引数の二乗を返します。 Microsoft固有:Microsoft C実装では、long long
int
値の積を保持するのに十分な大きさです。
return
square
return
ステートメントでは必要ありません。p>
double ratio( int numerator, int denominator ){ // Cast one operand to double to force floating-point // division. Otherwise, integer division is used, // then the result is converted to the return type. return numerator / (double) denominator;}
ratio
int
double
return
double
にキャストすることにより、浮動小数点演算を使用するように強制されます。 それ以外の場合は、整数除算演算子が使用され、小数部は失われます。p>
void report_square( void ){ int value = INT_MAX; long long squared = 0LL; squared = square( value ); printf( "value = %d, squared = %lld\n", value, squared ); return; // Use an empty expression to return void.}
report_square
square
INT_MAX
int
INT_MAX
int
long long
squared
report_square
void
return
ステートメントに式がありません。P>
void report_ratio( int top, int bottom ){ double fraction = ratio( top, bottom ); printf( "%d / %d = %.16f\n", top, bottom, fraction ); // It's okay to have no return statement for functions // that have void return types.}
report_ratio
ratio
1
INT_MAX
fraction
report_ratio
void
report_ratio
の実行は”底から落ち”、呼び出し元に値を返しません。P>
int main(){ int n = 1; int x = INT_MAX; report_square(); report_ratio( n, x ); return 0;}
main
report_square
report_ratio
report_square
void
report_ratio
void
main
0
C_return_statement.c
という名前のソースコードファイルを作成します。 次に、表示されている順序で、すべてのサンプルコードをコピーします。 ファイルを保存し、次のコマンドを使用して開発者のコマンドプロンプトウィンドウでコンパイルします。
cl /W4 C_return_statement.c
次に、サンプルコードを実行するには、コマンドプロンプトでC_return_statement.exe
と入力します。 この例の出力は次のようになります。