return 문 (C)return Statement (C)

return 문은 함수 실행을 종료하고 호출 함수로 컨트롤을 반환합니다.The return statement terminates the execution of a function and returns control to the calling function. 호출 바로 다음 지점의 호출 함수에서 실행을 다시 시작합니다.Execution resumes in the calling function at the point immediately following the call. return 문은 호출 함수로 값을 반환할 수도 있습니다.A return statement can also return a value to the calling function. 자세한 내용은 반환 형식을 참조하세요.See Return Type for more information.

구문Syntax

점프 문:jump-statement:
return expression opt;return expression opt;

expression의 값(있는 경우)이 호출 함수로 반환됩니다.The value of expression, if present, is returned to the calling function. expression을 생략하면 함수의 반환 값이 정의되지 않습니다.If expression is omitted, the return value of the function is undefined. 식이 있는 경우 평가된 다음 함수에서 반환한 형식으로 변환됩니다.The expression, if present, is evaluated and then converted to the type returned by the function. 함수가 반환 형식 void로 선언되는 경우 식이 포함된 return 문은 경고를 발생시키고 식은 계산되지 않습니다.If the function was declared with return type void, a return statement containing an expression generates a warning and the expression is not evaluated.

함수 정의에 return 문이 표시되지 않으면 호출된 함수의 마지막 문이 실행된 후 호출 함수에 컨트롤이 자동으로 반환됩니다.If no return statement appears in a function definition, control automatically returns to the calling function after the last statement of the called function is executed. 이 경우 호출된 함수의 반환 값은 정의되지 않습니다.In this case, the return value of the called function is undefined. 반환 값이 필요하지 않은 경우 void 반환 형식을 포함하도록 함수를 선언합니다. 그렇지 않은 경우의 기본 반환 형식은 int입니다.If a return value is not required, declare the function to have void return type; otherwise, the default return type is int.

대부분의 프로그래머는 return 문의 expression 인수를 괄호로 묶습니다.Many programmers use parentheses to enclose the expression argument of the return statement. 그러나 C에서는 괄호가 필요하지 않습니다.However, C does not require the parentheses.

이 예제에서는 return 문을 보여 줍니다.This example demonstrates the return statement:

#include <limits.h>  
#include <stdio.h>  

void draw( int i, long long ll );  
long long sq( int s );  

int main()  
{  
    long long y;  
    int x = INT_MAX;  

    y = sq( x );  
    draw( x, y );  
    return x;  
}  

long long sq( int s )  
{  
    // Note that parentheses around the return expression   
    // are allowed but not required here.  
    return( s * (long long)s );  
}  

void draw( int i, long long ll )  
{  
    printf( "i = %d, ll = %lld\n", i, ll );  
    return;  
}  

이 예제에서 main 함수는 sqdraw의 두 함수를 호출합니다.In this example, the main function calls two functions: sq and draw. sq 함수는 x * x의 값을 main에 반환합니다. 여기서 반환 값은 y에 할당됩니다.The sq function returns the value of x * x to main, where the return value is assigned to y. sq의 반환 표현식을 둘러싼 괄호는 식의 일부분으로 평가되고 반환 명령문에 필요하지 않습니다.The parentheses around the return expression in sq are evaluated as part of the expression, and are not required by the return statement. 반환 표현식은 반환 형식으로 변환되기 전에 평가되기 때문에 sq는 캐스팅을 사용하여 표현식 형식이 반환 형식이 되도록 강제 지정함으로써 예기치 않은 결과를 발생시킬 수 있는 정수 오버플로를 방지합니다.Since the return expression is evaluated before it is converted to the return type, sq forces the expression type to be the return type with a cast to prevent a possible integer overflow, which could lead to unexpected results. draw 함수는 void 함수로 선언됩니다.The draw function is declared as a void function. 이 매개 변수의 값을 출력한 다음에는 빈 반환 명령문이 함수를 종료하고 값을 반환하지 않습니다.It prints the values of its parameters and then the empty return statement ends the function and does not return a value. 반환 값 draw를 할당하려고 하면 진단 메시지가 표시됩니다.An attempt to assign the return value of draw would cause a diagnostic message to be issued. 그러면 main 함수가 x의 값을 운영 체제로 반환합니다.The main function then returns the value of x to the operating system.

예를 들어 다음과 같이 출력됩니다.The output of the example looks like this:

i = 2147483647, ll = 4611686014132420609  

참고 항목See Also

Statements