본문 바로가기

IT프로그래밍

[c언어]switch문 / switch-case문

 

c언어에서 조건문하면 빼놓을 수 없는 switch문(switch-case문) 입니다

 

1. switch문 표현법

2. switch문 예제

 

 

MDSN에 표기된 switch문의 표현법은 다음과 같습니다.

switch ( expression )
{
    // declarations
    // . . .
    case constant_expression:
        // statements executed if the expression equals the
        // value of this constant_expression
        break;
    default:
        // statements executed if expression does not equal
        // any case constant_expression
}
 
 

 

switch(조건에 대입할 값)

{

    case 조건1:

      실행될 코드

      break;

    case 조건2:

      실행될 코드

      break;

    default:

    모든 조건이 맞지 않을 경우 실행될 코드

}

입니다.

 

 

예제를 통해서 더 보도록 하죠!

#include <stdio.h>
 
int main(void)
{
    int number = 3;
 
    switch (number)
    {
        case 0:
            printf("Call Functtion A");
            break;
 
        case 1:
            printf("Call Functtion B");
            break;
 
        case 2:
            printf("Call Functtion B");
            break;
 
        case 3:
            printf("Call Functtion D");
            break;
            
        default:
            printf("NO Call");
            break;
    }
}
 

코드 설명

스텝 1. int형 변수 number를 생성하고 3을 할당.

스텝2. switch(number)  ==> number에 들어 있는 값에 따라서 아래 case로 분기

스텝3. number == 0 인가 ? ==> 아님

스텝4. number == 1인가 ? ==> 아님

스텝5. number == 2인가 ? ==> 아님

스텝6. number == 3인가 ? ==> 맞음

스텝7. printf("Call Function D"가 실행됨 ==> 콘솔창에 Call Funtion D가 출력

스텝8. break; 실행 ==> switch{}문 자체를 빠져나옴

스텝9. 프로그램 종료

 

실행 결과

case ■ :

실행될코드;

break;

 

■ 에는 반드시 상수(const)가 들어가야 합니다.

c언어에서 상수란 한번 정의 후 그 값이 변하지 않는 값을 의미하며,

지금은 변수와 반대개념이라고 생각해주세요.

★ 즉 case문의 조건으로 변수를 정의할 수는 없습니다

 

char형 변수로 switch문을 호출하는 예제를 하나더 살펴 보겠습니다.

소스코드

#include <stdio.h>
 
int main(void)
{
    char char_num = '2';
 
    switch (char_num)
    {
        case '1':
            printf("CALL Function A\n");
        break;
 
        case '2':
            printf("CALL Function B\n");
        //break; 주석처리!
 
        case '3':
            printf("CALL Function C\n");
        break;
        case '4':
            printf("CALL Function D\n");
        break;
    default:
            printf("NO CALL\n");
        break;
    }
}
 
 

코드 설명

스텝 1. char형 변수 char_num을 생성하고 '2'를 할당.

스텝2. switch(char_num)  ==> char_num에 들어 있는 값에 따라서 아래 case로 분기

스텝3. char_num== '1' 인가 ? ==> 아님

스텝4. char_num== '2' 인가 ? ==> 맞음

스텝5. printf("Call Function B"가 실행됨 ==> 콘솔창에 Call Funtion B가 출력

스텝6. printf("Call Function C"가 실행됨 ==> 콘솔창에 Call Funtion C가 출력 ★

스텝7. break; 실행 ==> switch{}문 자체를 빠져나옴

스텝8. 프로그램 종료

 

실행 결과

 

여기서 짚어봐야 할 것은 2개 입니다.

1. switch문은 모든 형식에서 사용이 가능하다는 것

2. switch문은 일치하는 case를 만난 후, 그 아래에 있는 모든 실행문을 실행!(default문 포함)

 

비유적으로 보면 일치하는 case를 만난 후 스위치가 ON이 되고

그 후로 모든 case안의 구문을 실행하게 됩니다.

따라서 해당 case구문만 실행하고 종료해야한다면 반드시 break가 걸려 있어야 합니다.