switch 문은 if / else 조건문보다는 사용할 수 있는 범위가 제한적이지만 조건의 분류가 다소 많을 때 유용하게 사용할 수 있습니다.
1. switch 문의 구조
#include <stdio.h>
int main(void)
{
int num = 3;
switch(num)
{
case 1 :
printf("The number is 1\n");
break;
case 2 :
printf("The number is 2\n");
break;
case 3 :
printf("The number is 3\n");
break;
case 4 :
printf("The number is 4\n");
break;
case 5 :
printf("The number is 5\n");
break;
case 6 :
printf("The number is 6 \n");
break;
default :
printf("The number is not 1,2,3,4,5,6\n");
}
return 0;
}
실행결과
The number is 3
계속하려면 아무 키나 누르십시오 . . .
switch 문에서 ( )에는 정수 타입 변수를 넣을 수 있습니다. 그리고 { } 안에서 num값에 따라 다른 case가 실행됩니다. num이 어떤 case도 만족하지 않으면 default를 실행시킵니다. 사실 default가 없어도 프로그램은 오류가 나지 않습니다. 하지만 아무런 case도 만족하지 않고 default가 없을 때에 switch문은 결국 아무것도 실행하지 않고 끝나버립니다.
2. break의 역할
break문은 break가 포함된 가장 하위단의 반복문을 빠져나온다고 말했지만 switch문을 탈출하는 데에도 사용이 됩니다. switch문은 case를 차례대로 훑으며 num과 같은 값이 인자로 전달된 case를 찾아 실행한다 했습니다. 하지만 switch문은 조건이 성립하는 case만 실행하는 것이 아니라, 그 case부터 아래의 모든 case를 실행시킵니다. 그렇기 때문에 특정한 문장만 실행한 이후 switch문을 빠져나오기 위해서 break를 써주어야 합니다.
#include <stdio.h>
int main(void)
{
int num = 3;
switch(num)
{
case 1 :
printf("The number is 1\n");
//break;
case 2 :
printf("The number is 2\n");
//break;
case 3 :
printf("The number is 3\n");
//break;
case 4 :
printf("The number is 4\n");
//break;
case 5 :
printf("The number is 5\n");
//break;
case 6 :
printf("The number is 6 \n");
//break;
default :
printf("The number is not 1,2,3,4,5,6\n");
//break;
}
return 0;
}
실행결과
The number is 3
The number is 4
The number is 5
The number is 6
계속하려면 아무 키나 누르십시오 . . .
break를 주석 처리하고 실행한 결과입니다. num이 3이기 때문에 case3에서 멈추고 실해을 시킵니다. 하지만 이후에 빠져나오지 않고 아래의 모든 case를 조건에 상관없이 실행시켜버립니다.
3. switch와 문자
switch문은 정수형 변수를 전달인자로 받는다고 했습니다. 따라서 문자도 받을 수 있습니다. 문자도 ASCII를 통해 변환 된 정수일 뿐이기 때문입니다.
#include <stdio.h>
int main(void)
{
char grade;
printf("What is your grade? ");
scanf("%c", &grade);
switch(grade)
{
case 'A' : case'a' :
printf("Great!\n");
break;
case 'B' : case'b' :
printf("Good\n");
break;
case 'C' : case 'c' :
printf("Try harder!\n");
break;
case 'D' : case 'd' :
printf("Bad..\n");
break;
case 'F' : case 'f' :
printf("Oh my god!\n");
break;
default :
printf("Such a grade does not exist!\n");
}
return 0;
}
실행결과
What is your grade? F
Oh my god!
계속하려면 아무 키나 누르십시오 . . .
위 코드처럼 한 번에 두 가지 이상의 case를 넣어줄 수 있습니다. 둘 중의 한 case에만 들어와도 해당 문장을 실행합니다.
'프로그래밍 언어 > C' 카테고리의 다른 글
(C언어) 19 - 함수(2) - 지역변수 (0) | 2020.05.14 |
---|---|
(C언어) 18 - C언어의 함수 구조 (0) | 2020.05.14 |
(C언어) 16 - 조건문(2) - 조건 연산자(삼항 연산자) (0) | 2020.05.14 |
(C언어) 15 - 조건문(1) - if (0) | 2020.05.14 |
(C언어) 14 - 반복문(3) - do while (0) | 2020.05.14 |