switch 문
정의
지정된 수식의 값에 따라 여러 경우 중 하나를 선택하여 실행한다.
지정된 수식은 그냥 정수값이거나, 정수 결과값을 가지는 계산식일 수 있다.
switch, case, default 키워드가 사용된다.
표현방법
1
2
3
4
5
6
7
switch ( expr_int ) { // 정수값, 혹은 정수 결과값을 가지는 계산식
case label_1 : statement_1 ; // 정수값이 label_1 일때 실행됨
case label_2 : statement_2 ; // 정수값이 label_2 일때 실행됨
...
default: statement_d ; // 위 모둔 case 에 해당하지 않는 경우 실행됨
}
// label : 상수값
주의사항
default 는 모든 case 에 해당하지 않는 경우 에 실행된다.
별도 break 설정이 되지 않는다면, 일치하는 case가 생겼을 때, 그 다음 나머지 case들은 비교 없이 그냥 수행되며, default 부분도 실행된다.
특정 하나의 case 만 실행시키고 싶을 경우 break 를 사용해 흐름을 제어 한다.
switch 문에 default 는 없을 수도 있다.
예시
모범 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void something (){
int score = 0 ;
scanf ( "%d" , & score );
switch ( score / 10 ) {
case 10 :
case 9 : printf ( "학점은 A \n " );
break ;
case 8 : printf ( "학점은 B \n " );
break ;
case 7 : printf ( "학점은 C \n " );
break ;
case 6 : printf ( "학점은 D \n " );
break ;
default: printf ( "학점은 F \n " );
}
}
default 선택 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void something (){
int score = 0 ;
scanf ( "%d" , & score );
switch ( score / 10 ) {
case 10 :
case 9 : printf ( "학점은 A \n " );
break ;
case 8 : printf ( "학점은 B \n " );
break ;
case 7 : printf ( "학점은 C \n " );
break ;
case 6 : printf ( "학점은 D \n " );
break ;
default: printf ( "학점은 F \n " );
}
}
case 주의사항
1
2
3
4
5
6
7
8
9
10
11
12
void something (){
int score = 0 ;
scanf ( "%d" , & score );
switch ( score / 10 ) {
case 10 :
case 9 : printf ( "학점은 A \n " );
case 8 : printf ( "학점은 B \n " );
case 7 : printf ( "학점은 C \n " );
case 6 : printf ( "학점은 D \n " );
default: printf ( "학점은 F \n " );
}
}
1
2
3
4
5
# 입력 87
학점은 B
학점은 C
학점은 D
학점은 F
break 가 없다면, 조건을 만족하는 case 부터 default까지 쭉 수행된다.
이를 폴 스루 (fall through) 라고 한다.
default 가 없을 수도 있다.
1
2
3
4
5
6
7
8
9
10
11
void something (){
int score = 0 ;
scanf ( "%d" , & score );
switch ( score / 10 ) {
case 10 :
case 9 : printf ( "학점은 A \n " );
case 8 : printf ( "학점은 B \n " );
case 7 : printf ( "학점은 C \n " );
case 6 : printf ( "학점은 D \n " );
}
}
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
Tags:
c ,
clang ,
control ,
c언어 ,
statement ,
structure ,
switch ,
구조 ,
언어 ,
제어 ,
제어구조 ,
제어문
Categories:
clang
Updated: 2025-12-d
Comments