반응형
if~else의 중첩을 대신할 수 있는 switch
아래의 swtich 문은 num값이 1이라면 case1 라벨부터 마지막까지 쭉 실행이 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | int main(void) { int num; printf("1에서 3 사이의 정수 입력: "); scanf("%d", &num); switch(num) { case 1://num이 1이면 여기서부터 시작 printf("A1 "); printf("A2 "); case 2://num이 2이면 여기서부터 시작 printf("B1 "); printf("B2 "); case 3://num이 3이면 여기서부터 시작 printf("C1 "); printf("C2 "); default://이도 저도 아니면 여기서부터 시작 printf("Default! \n"); } return 0; } | cs |
하지만 아래의 swtich 문은 num값이 1이라면 case1 라벨부터 break 전까지 실행후 빠져나가게 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | int main(void) { int num; printf("정수 입력: "); scanf("%d", &num); switch(num) { case 1: printf("A1 "); printf("A2 \n"); break; case 2: printf("B1 "); printf("B2 \n"); break; default: printf("Default! \n"); } return 0; } | cs |
if~else문 대신 switch문을 사용하면 훨씬 간결해 보이는 장점이 있다.
그리고 또 다른 switch문의 활용을 봐보자.
한줄에 둘 이상의 레이블을 둘 수도 있다. 이 또한 if~else문 보다 훨씬 간결해 보이는 장점이 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> int main(void) { int num; printf("정수 입력(1이상 30미만): "); scanf("%d", &num); switch(num) { case 2: case 3: case 5: case 7: printf("1이상, 10미만의 소수입니다. \n"); break; case 11: case 13: case 17: case 19: printf("10이상, 20미만의 소수입니다. \n"); break; case 23: case 29: printf("20이상, 30미만의 소수입니다. \n"); break; default: printf("소수가 아닙니다. \n"); printf("또는 0이하이거나 30이상의 수입니다. \n"); } return 0; } | cs |
하지만 한계점도 있다. if~else문에서 처럼 비교연산과 논리연산을 진행할 수 없다.
따라서 적절히 if~else문과 switch문을 선택하여 사용하자.
반응형
'BackEnd > C' 카테고리의 다른 글
반복문 (0) | 2019.03.04 |
---|---|
스코프(scope) (0) | 2019.03.04 |
삼항 연산자 (0) | 2019.03.03 |
if~else문 (0) | 2019.03.03 |
scanf함수를 이용한 정수와 실수의 입력 (0) | 2019.02.26 |