C 언어에서 switch 문은 여러 가지 선택지 중 하나를 골라야 할 때 사용하는 제어문입니다. switch는 주어진 값을 정수 또는 문자 상수 목록과 차례대로 비교하며, 일치하는 값(case)을 찾으면 그 값에 연결된 문장(들)을 실행합니다.
switch 문의 기본 문법
switch 문의 기본 구조는 아래와 같습니다.
switch (expression){
case value1 : stmt1;
break;
case value2 : stmt2;
break;
- - - - - -
default : stmt-x;
}동작 알고리즘
switch 문의 동작 흐름을 단계별로 살펴보면 다음과 같습니다.
Step 1: 변수를 선언한다.
Step 2: 표현식(expression) 변수를 입력받는다.
Step 3: switch(expression) 평가
값 1이 선택되면 : stmt 1 실행 후 break (switch 블록 탈출)
값 2가 선택되면 : stmt 2 실행 후 break
값 3이 선택되면 : stmt 3 실행 후 break
...
Default : 일치하는 값이 없으면 stmt-x 실행;
주요 특징
- break 문의 역할: 각 case 끝의 break는 switch 블록을 즉시 빠져나가게 합니다. break가 없으면 일치하는 case 이후의 모든 문장이 연달아 실행되는 fall-through 현상이 발생합니다.
- default 절: 어떤 case와도 일치하지 않을 때 실행되며, 생략할 수 있습니다.
- 사용 가능한 자료형: switch의 표현식에는 정수형(int, char 등)만 사용할 수 있으며, float나 double은 허용되지 않습니다.
예제 1: 숫자 판별 프로그램
다음 C 프로그램은 switch 문의 기본적인 사용 방법을 보여줍니다.
#include<stdio.h>
main ( ){
int n;
printf ("enter a number");
scanf ("%d", &n);
switch (n){
case 0 : printf ("zero");
break;
case 1 : printf ("one");
break;
default : printf ("wrong choice");
}
}
실행 결과
enter a number
1
One
입력값이 1이므로 case 1에 해당하는 "one"이 출력된 것을 확인할 수 있습니다.
예제 2: 학생 성적 판별 프로그램
이번에는 문자(char) 값을 조건으로 사용하는 switch 문 예제입니다. 학생의 성적 등급을 입력받아 등급에 맞는 결과를 출력합니다.
#include<stdio.h>
int main(){
char grade;
printf("Enter the grade of a student:\n");
scanf("%c",&grade);
switch(grade){
case 'A': printf("Distinction\n");
break;
case 'B': printf("First class\n");
break;
case 'C': printf("Second class \n");
break;
case 'D': printf("Third class\n");
break;
default : printf("Fail");
}
printf("Student grade=%c",grade);
return 0;
}
실행 결과
Run 1:
Enter the grade of a student:A
Distinction
Student grade=A
Run 2:
Enter the grade of a student:C
Second class
Student grade=C
첫 번째 실행에서는 'A'를 입력해 "Distinction"이 출력되었고, 두 번째 실행에서는 'C'를 입력해 "Second class"가 출력되었습니다. 이처럼 switch 문은 if-else if 문보다 코드가 간결하고 가독성이 좋아, 여러 분기 조건을 처리할 때 널리 활용됩니다.