C 언어에서 switch 문 사용법 완전 정리 | 기본부터 응용까지

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문이 적합한 경우
  • 비교하는 값이 고정되어 있고, 그 값에 따라 분기하는 경우(예: 메뉴 선택, 상태 코드).
  • 조건이 단순하고, 구체적인 값에 대해 처리를 하고 싶을 때.
if문이 적합한 경우
  • 복잡한 조건식을 다루는 경우(예: 범위 지정이나 부등호 사용).
  • 조건이 숫자가 아니라 논리식이나 여러 변수에 기반해 판단해야 할 때.
switch문은 특정 값에 기반한 간단한 조건 분기에 적합하지만, if문은 보다 유연하게 복잡한 조건을 평가할 수 있으므로 상황에 따라 구분해서 사용하는 것이 중요합니다.

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문”을 활용하여 보다 정교한 코드를 구현해 주세요.
年収訴求