age가 9이니 ‘초등학생입니다.’를 출력합니다. 만약 age가 15라면 case의 값을 확인하다가 15를 찾아 ‘중학생입니다.’를 출력하고 break 문을 만나 switch 문을 빠져나가겠죠.
그런데 코드를 보니까 똑같은 문장을 여러 번 작성했습니다. 반복 작업을 쉽게 하려고 코드를 작성하는데, 같은 문장을 여러 번 쓰기 싫겠죠? 이를 해결할 방법이 있습니다.
앞에서 값과 일치하는 case 문을 만날 때까지 아무것도 안 하고 넘어가다가 값과 일치하는 case를 만나면 그 이후에 문장을 모두 수행한다고 설명했죠. 그리고 break 문을 만나면 switch 문을 빠져나가고요. 이러한 작동 원리를 적용해 다음처럼 동일한 문장을 없애버리면 됩니다.
4.4.3 나이구분.c
int main(void) {
int age = 9;
switch (age) {
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
printf("초등학생입니다.\n");
break;
case 14:
case 15:
case 16:
printf("중학생입니다.\n");
break;
case 17:
case 18:
case 19:
printf("고등학생입니다.\n");
break;
default:
printf("청소년이 아닙니다.\n");
}
return 0;
}