C언어에는 if문과 비슷하지만 다른 조건을 처리할 수 있는 문법이 있습니다. if문에서는 조건식의 참,거짓 유무로 코드를 실행하기 때문에 조건의 분류가 아주 많으면 코드가 길어지고 번거롭습니다.
반면 switch문은 형식이 일정한 조건들에 대해 if보다 편하게 많은 분기를 만들 수 있습니다. switch문의 사용법에 대해 알아봅시다.
switch 분기문의 기본형은 아래와 같습니다.
switch (변수)
{
case 1:
수행할 코드 1 // 변수 값이 1이면 실행할 코드
break;
case 2:
수행할 코드 2 // 변수 값이 2이면 실행할 코드
break;
case 3:
수행할 코드 3
break;
.
.
.
case n:
수행할 코드 n
break;
default: // 아무 case에도 해당되지 않을 때
수행할 코드
}
#include <stdio.h>
int main()
{
int number;
printf("숫자를 입력하세요 : ");
scanf("%d", &number);
switch (number)
{
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
default:
printf("No");
break;
}
return 0;
}
숫자를 입력하세요 : 2
2
숫자를 입력하세요 : 0
No
switch 분기문은 변수 값을 직접 조건으로 사용하여 다양한 정형화된 조건 분기에 사용할 수 있습니다.
switch문에서 break를 사용하지 않으면 어떻게 출력될까요?
#include <stdio.h>
int main()
{
int hole = 1;
switch (hole)
{
case 1:
printf("This is hole number 1\\n");
case 2:
printf("This is hole number 2\\n");
case 3:
printf("This is hole number 3\\n");
}
return 0;
}
This is hole number 1
This is hole number 2
This is hole number 3
분명 case 1: 일때만을 의도하고 코드를 짰지만 각 케이스의 코드가 모두 실행되었습니다.
C언어에서 break는 일반적으로 조건을 무시하고 구문을 즉시 빠져나올 떄 많이 사용됩니다. 코드는 위에서 아래로 실행되기 때문에 만약 switch문에서 break를 사용하지 않는다면 의도치 않은 부분의 코드가 함께 실행될 수 있습니다.

< break문이 있는 switch문 >

< break문이 생략된 switch문 >
switch문은 number의 값에 따라 해당하는 case 혹은 default 부분으로 프로그램의 실행 부분을 옮겨주는 것일 뿐 별달리 각 case의 코드만이 실행되도록 제한을 걸어주지는 않습니다. 따라서 break문을 사용해 원하는 부분의 코드가 실행되고 나서 구문을 빠져나와야 하는 것이죠.