목차

IV-1. switch 분기문

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를 사용하지 않는다면 의도치 않은 부분의 코드가 함께 실행될 수 있습니다.

image.png

< break문이 있는 switch문 >

image.png

< break문이 생략된 switch문 >

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