본문 바로가기

프로그래밍 -----------------------/C,C++ 기초

10. switch문 사용법 - 제어문



10. switch문 사용법 - 제어문


switch문은 다중선택문으로써 여러가지의 조건에 대한 분류를 합니다. 
else if문의 확장형이라고 생각하시면 쉽습니다.



형식                                 
switch( 정수식 )
{
case 상수1:    명령문1:
     break;

case 상수2:    명령문2:
     break;

case 상수3:    명령문3:
     break;
}



switch문은 case를  사용하여 분기를 합니다.

if문과 한번 비교해 보도록하죠.


switch문을 사용하지 않고 if문으로 만들 경우           
if( 정수식 == 상수1)
{
명령문1;
}
else if( 정수식 == 상수2)
{
명령문2;
}
else if( 정수식 == 상수3)
{
명령문3;
}


무엇이 같고 다른지 아시겠죠?
여러가지 조건을 걸어야 할 경우 if문으로 만들면 위에서 본것마냥 else if, else if, else if를 남발해야 합니다. 코드도 길어지고 복잡해 지겠죠? 그래서 switch를 사용하는 겁니다.

switch문을 사용할때의 주의점이 있습니다. 바로 break문이죠. break문은 for문이나 while문, switch문,if문,등등 여러곳에서 사용합니다. c,c++레퍼런스 카테고리에 break문에 대해 설명해 놓을것이니 궁금하시면 그쪽을 보시도록 하세요. 

break문을 사용하지 않으면 switch문을 바로 빠져나오지 않고 다음case문으로 갑니다. 무슨 예기인고하니 다음 예제를 보죠.


int i = 1;

switch( i )
{
case 1: printf("1입니다.\n");

case 2: printf("2입니다.\n");
        break;

case 3: printf("3입니다.\n");
break;
}



화면에 어떻게 출력이 될까요? 

"1입니다."
"2입니다."

이렇게 출력됩니다. break를 걸지 않았기때문에 바로 아래에 있는 case까지 처리하고 나온거죠. 처리된 부분만 보자면,


switch( i )
{
case 1: printf("1입니다.\n");

case 2: printf("2입니다.\n");
        break;     // << 여기서 나가버린겁니다. 

case 3: printf("3입니다.\n");
break;
}


정리하자면,

switch문은 다중선택문으로써 여러가지의 조건을 걸어야 할경우 사용합니다. 
break를 병합해서 사용합니다. 때로는 일부러 break문을 사용하지 않을때도 있습니다.