switch (수식) {
case 값1:
수식값이 값1 일때 실행할 문장
break;
case 값2:
수식값이 값2 일때 실행할 문장
break;
default :
위의 수식값이 일치하지 않을때 실행할 문장
break;
}
if문은 조건에 따라 참과 거짓의 두가지의 경우의 처리를 하는 반면,
switch문은 수식의 값에 따라 명령을 처리 합니다.
따라서 if문의 조건과 같이 논리적 값은 사용할 수 없고, 오차가 있는 실수값도 사용하지 않습니다.
case 값에는 오직 한개의 값만이 사용가능하고, C언어에서는 정수만 값이 올 수 있습니다.
break문은 아직 배우지 않은 것인데, switch문을 진행하다가 break문을 만나면 switch문을 빠져나가게 됩니다.
default 는 위의 값들이 수식과 일치 하지 않는경우 실행되며 생략이 가능합니다.
default가 없고 모든 case가 일치하지 않으면 실행되지 않을 수 있습니다.
#include <stdio.h>
int main(void) {
int choice;
printf("1~5의 정수를 입력 : ");
scanf("%d", &choice);
switch (choice) {
case 1 :
printf("1은 One\n");
break;
case 2:
printf("2는 Two\n");
break;
case 3:
printf("3은 Three\n");
break;
case 4:
printf("4는 Four\n");
break;
case 5:
printf("5는 Five\n");
break;
default :
printf("잘모르겠어요.\n");
break;
}
return 0;
}
결과를 보면 명확히 알수 있습니다.
choice 변수의 값에 따라 해당하는 case문이 실행되고 break문을 만나 빠져 나오는것을 알수 있습니다.
그런데 break문을 쓰지 않는다면 어떻게 될까요?
위의 코드에서 break;문을 다 지우고 실행하게 되면 다음과 같이 됩니다. 직접해보세요!
위와 같이 2를 입력하여 Two를 실행하고 빠져나오는 break문이 없어서 다음 case문들까지 다 실행되는것을 볼수 있습니다.
아래는 의도적으로 break를 빼고 프로그램한 예입니다.
#include <stdio.h>
int main(void) {
char choice;
printf("M.아침, A.점심, E,저녁 :");
scanf("%c", &choice);
switch (choice) {
case 'm' :
case 'M' :
printf("Good Morning\n");
break;
case 'a' :
case 'A' :
printf("Good Afternoon\n");
break;
case 'e':
case 'E' :
printf("Good Evening\n");
break;
}
return 0;
}
사용자에게 입력받을때 소문자를 입력받아도 출력이 되도록 하였습니다.
이처럼 switch문은 break문이 선택적으로 삽입하여 사용할 수 있습니다.
1. 위의 switch문 예제를 if문으로 바꾸어 보세요.
2. if문 연습문제1번을 switch 문으로 바꾸어보세요.
사용자로부터 사칙연산 중 하나를 선택하고 두개의 실수를 입력받아 결과를 출력하는 프로그램을 작성하세요.
단, 나누기의 경우 0이면 0으로 나눌수 없다는 출력을 하고 종료.