目次
1. 소개
프로그래밍에서 자주 사용되는 “switch문”은 조건 분기를 간결하게 표현하기 위한 매우 편리한 도구입니다. C 언어에서도 여러 선택지를 정리할 때 “switch문”을 활용하면 코드 가독성이 향상되고 버그를 줄이는 효과가 있습니다. 이 기사에서는 C 언어의 “switch문” 기본 사용법부터 응용 예제까지 실제 코드 예를 포함하여 설명합니다.2. C 언어에서 switch 문이란?
「switch문」은 특정 변수에 대해 여러 값을 비교하고 각각에 맞는 처리를 실행하는 구문입니다. 주로 조건이 숫자나 열거형(enum)으로 정의될 때 유효합니다. 예를 들어, 사용자가 선택한 메뉴 번호에 따라 처리를 분기하는 프로그램을 간결하게 작성할 수 있습니다。switch (조건) {
case 값1:
// 값1 처리
break;
case 값2:
// 값2 처리
break;
default:
// 어떤 값과도 일치하지 않을 경우의 처리
}
이 구문에서는 switch
로 지정한 식의 값에 따라 case
에 정의된 처리가 실행됩니다. 어떤 case
와도 일치하지 않을 경우 default
가 실행되므로, 예상치 못한 값에 대한 오류 처리가 가능합니다。
3. switch문 기본 구문
다음으로, 기본적인 사용 예를 소개합니다. 아래 프로그램에서는 주사위 눈에 따라 메시지를 표시합니다.int main(void) {
int dice = 3;
switch (dice) {
case 1:
printf("1이 나왔습니다.");
break;
case 2:
printf("2가 나왔습니다.");
break;
case 3:
printf("3이 나왔습니다.");
break;
case 4:
printf("4가 나왔습니다.");
break;
case 5:
printf("5가 나왔습니다.");
break;
case 6:
printf("6이 나왔습니다.");
break;
default:
printf("잘못된 눈이 나왔습니다.");
break;
}
return 0;
}
이 예에서는 dice
의 값이 3일 때 “3이 나왔습니다.”가 표시됩니다. 만약 유효하지 않은 값이 입력된 경우 default
에 의해 “잘못된 눈이 나왔습니다.”라는 메시지가 표시되어 오류 처리가 적절히 이루어지도록 되어 있습니다.
4. switch문 사용 예: 메뉴 선택
switch문은 사용자의 입력에 따라 여러 처리를 수행할 때 특히 유용합니다. 아래 예에서는 사용자가 선택한 요리 번호에 따라 해당 메시지를 표시합니다.int main(void) {
int choice;
printf("메뉴:");
printf("1. 햄버거");
printf("2. 피자");
printf("3. 파스타");
printf("번호를 선택하세요: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("햄버거를 선택했습니다。");
break;
case 2:
printf("피자를 선택했습니다。");
break;
case 3:
printf("파스타를 선택했습니다。");
break;
default:
printf("잘못된 선택입니다。");
break;
}
return 0;
}
이 프로그램은 사용자가 선택한 메뉴에 따라 다른 메시지를 표시합니다. “switch문”을 사용하면 코드가 간단하고 읽기 쉬워지며, 유지보수도 용이해집니다.
5. switch와 if문 차이점: 어느 것을 사용해야 할까?
switch문과 if문은 모두 조건 분기를 수행하지만, 구분해서 사용할 포인트가 있습니다. switch문이 적합한 경우:- 비교하는 값이 고정되어 있고, 그 값에 따라 분기하는 경우(예: 메뉴 선택, 상태 코드).
- 조건이 단순하고, 구체적인 값에 대해 처리를 하고 싶을 때.
- 복잡한 조건식을 다루는 경우(예: 범위 지정이나 부등호 사용).
- 조건이 숫자가 아니라 논리식이나 여러 변수에 기반해 판단해야 할 때.
6. 흔히 발생하는 실수와 그 회피 방법
switch 문을 사용할 때 자주 나타나는 실수와 그 해결 방법을 소개합니다. 1. break 문 생략에 의한 폴스루break
문을 잊으면 지정된 케이스뿐만 아니라 그 이후의 케이스도 실행됩니다. 이를 “폴스루”라고 부르지만, 의도적으로 사용하는 경우를 제외하고는 반드시 각 case
의 마지막에 break
문을 넣어야 합니다. 2. default 문 미사용 사용자 입력이나 예상치 못한 값이 발생할 가능성이 있는 경우에는 default
문을 사용하여 오류 처리를 하는 것이 중요합니다. 이를 통해 프로그램이 예상치 못한 동작을 할 위험을 줄일 수 있습니다.
7. switch문과 enum의 응용
switch문을 더욱 강력하게 활용하는 방법 중 하나로, “enum(열거형)”을 사용하는 경우가 있습니다. enum을 사용하면 숫자가 아니라 의미 있는 이름으로 조건을 다룰 수 있어, 코드가 직관적으로 이해하기 쉬워집니다.enum Fruit { APPLE, BANANA, ORANGE };
int main(void) {
enum Fruit fruit = BANANA;
switch (fruit) {
case APPLE:
printf("사과를 선택했습니다.");
break;
case BANANA:
printf("바나나를 선택했습니다.");
break;
case ORANGE:
printf("오렌지를 선택했습니다.");
break;
default:
printf("잘못된 선택입니다.");
break;
}
return 0;
}
이 예에서는 enum
을 사용해 과일 선택지를 정의하고, 이를 기반으로 switch문
으로 처리를 분기하고 있습니다. 열거형을 사용함으로써 코드의 가독성과 유지보수성이 향상됩니다.8. 요약
C언어에서 “switch문”은 조건이 특정 값에 기반할 때 매우 효과적입니다.if문
과 비교하여, 단순한 값 분기 처리에 특화되어 있으며, 가독성을 유지하면서 효율적인 코드를 작성할 수 있습니다. 앞으로의 프로그래밍에서 꼭 “switch문”을 활용하여 보다 정교한 코드를 구현해 주세요.