[C언어] switch break문

ET의 공부/C언어|2020. 12. 19. 22:26

switch문

if문을 사용하여 조건에 맞는 구문을 실행할수 있고 여러 선택지에서 하나를 선택할경우 if , else if .... else 문을 사용하여 하나를 택할수 있습니다. 하지만 선택지가 여러개일 경우 switch 문을 사용할 경우 편리하고 간결하게 프로그램을 작성할수 있습니다.

 

switch의 구조

switch문은 switch문 뒤에 있는 괄호()안의 표현식으로 평가합니다. 스위치문안의 case에 해당 표현식이 있는지 훑어보고 일치하는 값이 있으면 그 레이블의 코드를 실행합니다. 일치하는 값이 없을 경우 default: 의 레이블의 코드가 실행됩니다. 

스위치문에서 break문은 스위치문을 탈출시키는 역할을 합니다. 

 

아래에서 switch문에서 break문이 있을때와 없을때의 차이를 확인해보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    int i = 2;
    switch (i) {
        case 1:
            printf("this is 1\n");
        case 2:
            printf("this is 2\n");
        case 3:
            printf("this is 3\n");
        case 4:
            printf("this is 4\n");
        default:
            printf("this is %d\n",i);
            
    }
    return 0;
}

 

 

위의 코드는 스위치문에 break문이 없는 코드입니다. break문이 없다면 값이 일치한 레이블(위의 코드에서는 2)부터 switch의 끝까지의 코드가 실행됩니다. 이를 알아보기 위해 case 3: 의 레이블만 break문을 작성해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    int i = 2;
    switch (i) {
        case 1:
            printf("this is 1\n");
        case 2:
            printf("this is 2\n");
        case 3:
            printf("this is 3\n");
            break;  //<- case 3에만 break문 적용
        case 4:
            printf("this is 4\n");
        default:
            printf("this is %d\n",i);
            
    }
    return 0;
}

 

 

앞서 break문이 없으면 switch의 끝까지의 코드가 실행된다고 했는데 case 2의 레이블이 실행되고 다음레이블인 case 3에서 break문을 만나 switch문을 탈출하는 것을 볼수있습니다. 완전한 switch break문은 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    int i = 2;
    switch (i) {
        case 1:
            printf("this is 1\n");
        case 2:
            printf("this is 2\n");
        case 3:
            printf("this is 3\n");
            break;  //<- case 3에만 break문 적용
        case 4:
            printf("this is 4\n");
        default:
            printf("this is %d\n",i);
            
    }
    return 0;
}

 

 

 case 2의 레이블만(i 는 2) 실행되는것을 볼수있습니다.

 

 

switch를 사용하는 경우

스위치문의 표현식은 정수형 표현식만 사용할수 있습니다. 만약 표현식이 float형 변수나 표현식이라면 선택의 여지가 없이 if else문을 사용해야 합니다. 또한 변수가 특정한 범위에 속하는 경우에도 switch문을 사용할수가 없습니다.

댓글()