switch 문 (C)switch Statement (C)

switchcase 문은 복잡한 조건부 및 분기 작업을 제어하는 데 도움이 됩니다.The switch and case statements help control complex conditional and branching operations. switch 문은 해당 본문 내의 문으로 제어를 전달합니다.The switch statement transfers control to a statement within its body.

구문Syntax

selection-statement:selection-statement:
switch( expression ) statementswitch ( expression ) statement

labeled-statement:labeled-statement:
case constant-expression : statementcase constant-expression : statement

default : statementdefault : statement

case constant-expressionswitch( expression )의 값과 일치하는 문으로 제어가 전달됩니다.Control passes to the statement whose case constant-expression matches the value of switch ( expression ). switch 문에는 case 인스턴스가 개수에 제한 없이 포함될 수 있지만 동일한 switch 문 내에 값이 같은 두 case 상수가 존재할 수는 없습니다.The switch statement can include any number of case instances, but no two case constants within the same switch statement can have the same value. 문 본문의 실행은 선택된 문에서 시작되고 본문의 끝에 도달하거나 break 문이 본문 밖으로 제어를 전달할 때까지 계속됩니다.Execution of the statement body begins at the selected statement and proceeds until the end of the body or until a break statement transfers control out of the body.

switch 문의 사용은 대개 다음과 같습니다.Use of the switch statement usually looks something like this:

switch ( expression )switch ( expression )

{{

declarationsdeclarations

입니다..

을 발생시킵니다..

입니다..

case constant-expression :case constant-expression :

statements executed if the expression equals thestatements executed if the expression equals the

value of this constant-expressionvalue of this constant-expression

입니다..

을 발생시킵니다..

입니다..

break;break;

default :default :

statements executed if expression does not equalstatements executed if expression does not equal

any case constant-expressionany case constant-expression

}}

break 문을 사용하여 switch 문 내의 특정 case 처리를 종료하고 switch 문의 끝으로 분기할 수 있습니다.You can use the break statement to end processing of a particular case within the switch statement and to branch to the end of the switch statement. break가 없는 경우 프로그램은 다음 case로 지속되어 break 또는 문의 끝에 도달할 때까지 문을 실행합니다.Without break, the program continues to the next case, executing the statements until a break or the end of the statement is reached. 어떤 상황에서는 이러한 지속이 바람직할 수 있습니다.In some situations, this continuation may be desirable.

default 문은 case constant-expressionswitch( expression )의 값과 같지 않은 경우 실행됩니다.The default statement is executed if no case constant-expression is equal to the value of switch ( expression ). default 문이 생략되는 경우 case 일치가 발견되지 않으면 switch 본문의 문이 실행되지 않습니다.If the default statement is omitted, and no case match is found, none of the statements in the switch body are executed. default 문은 하나만 존재할 수 있습니다.There can be at most one default statement. default 문은 끝에 와야 할 필요가 없으며 switch 문의 본문 어느 위치에나 나타날 수 있습니다.The default statement need not come at the end; it can appear anywhere in the body of the switch statement. case 또는 default 레이블은 switch 문 안에서만 나타날 수 있습니다.A case or default label can only appear inside a switch statement.

switch expressioncase constant-expression의 형식은 정수여야 합니다.The type of switch expression and case constant-expression must be integral. case constant-expression의 값은 문 본문 내에서 고유해야 합니다.The value of each case constant-expression must be unique within the statement body.

switch 문 본문의 casedefault 레이블은 문 본문에서 실행이 시작되는 위치를 결정하는 초기 테스트에서만 의미가 있습니다.The case and default labels of the switch statement body are significant only in the initial test that determines where execution starts in the statement body. switch 문은 중첩될 수 있습니다.Switch statements can be nested. switch 문을 실행하기 전에 모든 정적 변수가 초기화됩니다.Any static variables are initialized before executing into any switch statements.

참고

선언은 switch 본문을 형성하는 복합 문의 위쪽에 나타날 수 있지만 선언에 포함된 초기화는 수행되지 않습니다.Declarations can appear at the head of the compound statement forming the switch body, but initializations included in the declarations are not performed. switch 문은 초기화가 포함된 줄을 우회하여 본문 내의 실행 문으로 제어를 직접 전달합니다.The switch statement transfers control directly to an executable statement within the body, bypassing the lines that contain initializations.

다음 예제에서는 switch 문을 보여 줍니다.The following examples illustrate switch statements:

switch( c )   
{  
    case 'A':  
        capa++;  
    case 'a':  
        lettera++;  
    default :  
        total++;  
}  

이 예제에서는 break 문이 다음 case 앞에 나타나지 않으므로 c'A'와 같은 경우 switch 본문의 모든 세 문이 실행됩니다.All three statements of the switch body in this example are executed if c is equal to 'A' since a break statement does not appear before the following case. 실행 제어는 첫 번째 문(capa++;)으로 전달되고 본문의 나머지 부분에서 순서대로 계속됩니다.Execution control is transferred to the first statement (capa++;) and continues in order through the rest of the body. c'a'와 같은 경우 letteratotal이 증가합니다.If c is equal to 'a', lettera and total are incremented. totalc 또는 'A'와 같지 않은 경우 'a'만 증가합니다.Only total is incremented if c is not equal to 'A' or 'a'.

switch( i )   
{  
    case -1:  
        n++;  
        break;  
    case 0 :  
        z++;  
        break;  
    case 1 :  
        p++;  
        break;  
}  

이 예제에서 break 문은 switch 본문의 각 문 뒤에 나옵니다.In this example, a break statement follows each statement of the switch body. break 문은 한 문이 실행된 후 문 본문에서 강제로 빠져나옵니다.The break statement forces an exit from the statement body after one statement is executed. i가 –1과 같은 경우 n만 증가합니다.If i is equal to -1, only n is incremented. n++; 문 다음에 오는 break는 실행 제어가 문 본문 밖으로 전달되고 나머지 문들을 우회하도록 합니다.The break following the statement n++; causes execution control to pass out of the statement body, bypassing the remaining statements. 이와 마찬가지로 i가 0과 같은 경우 z만 증가하고, i가 1과 같은 경우에는 p만 증가합니다.Similarly, if i is equal to 0, only z is incremented; if i is equal to 1, only p is incremented. 제어가 복합 문의 끝에서 본문 밖으로 전달되므로 마지막 break 문은 반드시 필요하지는 않지만 일관성을 위해 포함되었습니다.The final break statement is not strictly necessary, since control passes out of the body at the end of the compound statement, but it is included for consistency.

다음 예제와 같이 단일 문이 여러 case 레이블을 수행할 수 있습니다.A single statement can carry multiple case labels, as the following example shows:

case 'a' :  
case 'b' :  
case 'c' :  
case 'd' :  
case 'e' :  
case 'f' :  hexcvt(c);  

이 예제에서 constant-expression'a''f' 사이의 문자와 같은 경우 hexcvt 함수가 호출됩니다.In this example, if constant-expression equals any letter between 'a' and 'f', the hexcvt function is called.

Microsoft 전용Microsoft Specific

Microsoft C는 switch 문의 case 값 수를 제한하지 않습니다.Microsoft C does not limit the number of case values in a switch statement. 이 수는 사용 가능한 메모리에 의해서만 제한됩니다.The number is limited only by the available memory. ANSI C의 경우 switch 문에서 257개 이상의 case 레이블이 허용되어야 합니다.ANSI C requires at least 257 case labels be allowed in a switch statement.

기본적으로 Microsoft C에는 Microsoft 확장을 사용하도록 설정되어 있습니다.The default for Microsoft C is that the Microsoft extensions are enabled. 이러한 확장을 사용하지 않도록 설정하려면 /Za 컴파일러 옵션을 사용하십시오.Use the /Za compiler option to disable these extensions.

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

switch 문(C++)switch Statement (C++)