Programming/C Lang Lecture

[C언어 강좌]13강 : switch 문

yutaejeong 2014. 8. 2. 10:56


Written By Imperfect


[C언어 강좌]13강 : switch 문


목차

1. switch와 case

2. switch문 사용해보기

3. default 함께 사용해보기


1. switch와 case

switch문은 특정변수또는 값을 입력하면 그 값에 대응하는 case의 적힌 명령을 수행합니다.

위의 이미지에선 switch에 10이란 값을 입력하였습니다.

그리고 아래의 여러가지 case 중 10의 값을 가진 case의 명령을 수행합니다.

또한 case의 값을 꼭 오름차순으로 정할 필요는 없습니다.


2. switch문 사용해보기

switch문은 아래와 같이 쓰입니다.


switch( 값 ) {


case:

명령;

break;


case:

명령;

break;


}


위에서 case 명령 끝에 넣은 break;의 의미는 여기서 명령을 마친다는 뜻입니다.

만약, break;를 안넣으면 해당 case 뒤의 case 들의 명령을 수행하게 됩니다.

아래는 switch문의 예시입니다. case의 값이 뒤죽박죽인 이유는 case의 값을 꼭 오름차순으로 정할필요가 없단는것을 강조하기 위함입니다. 실제로 사용하실떄는 필요한 값을 지정하고 보기 좋게 정렬하시는것이 좋습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
int main()
{
    int i = 1;
    switch(i)
    {
        case 1:
            printf("1");
        case 4:
            printf("2");
        case 45:
            printf("3");
        case 30:
            printf("4");
        case 28:
            printf("5");
    }
    return 0;
}
위의 결과는 아래와 같습니다.

왜이런 결과가 나올까요?

break;를 작성하지 않았기 때문입니다.

i의 값을 1이라 정하고 switch문에서 i의 값을 입력하고,

1의 값을 가진 case의 명령을 수행한후 break; 문이 없어서 아래의 case 들의명령까지 처리한것입니다.

한번 제대로 고쳐서 컴파일해봅시다.  아래는 고친 소스 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
int main()
{
    int i = 1;
    switch(i)
    {
        case 1:
            printf("1");
            break;
        case 4:
            printf("2");
            break;
        case 45:
            printf("3");
            break;
        case 30:
            printf("4");
            break;
        case 28:
            printf("5");
            break;
    }
    return 0;
}

위의 소스를 컴파일한 결과는 아래와 같습니다.

제대로 출력이 되었습니다.


3. default 함께 사용해보기

만약 switch에 입력한값이 그 어떤case의 값과 일치하지 않을 떄 다른 명령을 수행할려면 default를 사용하면 됩니다. 아래는 default를 사용한 소스 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
int main()
{
    char c = 'F';
    switch(c)
    {
        case 'A':
            printf("A");
            break;
        case 'B':
            printf("B");
            break;
        case 'C':
            printf("C");
            break;
        case 'D':
            printf("D");
            break;
        case 'E':
            printf("E");
            break;
        default:
            printf("%c", c);
            break;
    }
    return 0;
}
위의 소스에서 정수형이아닌 문자형 변수를 switch문에 입력하였습니다.

위처럼 switch문에선 모든 형식의 변수를 입력할수있습니다.

위에서, c의 값은 'F'입니다.

하지만 'F'라는 값을 가진 case는 없습니다.

그래서 default의 명령이 실행됩니다. 만약 switch문에 입력한 변수의 값에 해당하는 case가 있으면 default의 명령은 실행되지 않습니다.

아래는 결과입니다.



이번 강좌는 여기까지 하겠습니다.



다음 강좌

14강 : 반복문(while)


[c언어 강좌]13강 : switch 문