반응형
기본 구조
switch(컨디션)
{
case 1:
명령문1;
break;
case 2:
명령문2;
break;
case 3:
명령문3;
break;
case 4:
명령문4;
break;
default:
디폴트 명령문;
break;
}
컨디션에는 if와 같은 조건문이 들어가고 그 리턴 값에 따라 만족하는 case의 명령문이 실행됩니다. 리턴 값은 정수 값입니다.
case는 정수 값으로 정의합니다. 컨디션의 리턴 값과 매치되는 case의 명령문을 실행합니다.
default에는 매치되는 값이 없을 경우 실행되는 명령문을 정의합니다.
switch 기본 규칙
- 컨디션는 정수를 리턴하는 코드여야 합니다.
- 각 case는 유일해야 합니다.
- 각 case는 세미콜론(;)으로 끝나야 합니다.
- 각 case의 명령문에는 C언어 문법을 따르는 코드이어야 합니다.
switch 주의할 점
- switch 컨디션이나 case는 오직 정수 값만 처리합니다. 실수 값(floating), 문자열(string), 문자(char) 등은 올 수 없습니다.
- default는 어디든 위치할 수 있으며 또한 생략 가능합니다. 통상 case의 제일 마지막에 위치합니다.
- 중첩 switch도 가능합니다. 통상 복잡함과 코드를 읽는데 어려움으로 사용하지 않습니다.
- 각 case의 끝은 break로 끝나야 합니다. 만약, break를 생략하면 break를 만날 때까지 이 후 모든 case의 명령문이 실행됩니다.
int i = 1;
switch(i)
{
case 1:
printf("A"); // No break
case 2:
printf("B"); // No break
case 3:
printf("C");
break;
}
OUTPUT
A B C
위의 코드처럼 break를 생략한 경우 매치된 case의 명령문부터 break를 만날때까지 모든 명령문이 실행됩니다.
예제:
#include<stdio.h>
void main( )
{
int a, b, c, choice;
while(choice != 3)
{
/* 가능한 입력값 출력 */
printf("\n 1. 1은 더하기");
printf("\n 2. 2는 빼기");
printf("\n 원하는 번호를 눌러주세요\n");
/* choice변수에 유저 입력값 저장 */
scanf("%d", &choice);
switch(choice)
{
case 1:
printf("두개의 숫자를 입력하세요\n");
scanf("%d%d", &a, &b);
c = a + b;
printf("%d", c);
break;
case 2:
printf("두개의 숫자를 입력하세요\n");
scanf("%d%d", &a, &b);
c = a - b;
printf("%d", c);
break;
default:
printf("잘못된 입력을 하였습니다.");
printf("\n 계속하시려면 3을 제외한 아무 숫자를 입력하세요\n");
}
}
}
if와 switch의 차이점
- if는 조건문에 float을 사용할 수 있지만, switch는 오직 정수만 가능합니다.
- if는 조건문에 관계 연산자(<, >, == etc) 사용이 가능하지만, switch에는 사용할 수 없습니다.
<< 다음 | 혼자 공부하는 C언어 | 이전 >> |
반응형
'프로그래밍 > C' 카테고리의 다른 글
C언어 포인터 변수 이해 (0) | 2019.10.17 |
---|---|
C언어 반복문 (Loop) (0) | 2019.09.25 |
C언어 조건문 (if) (0) | 2019.09.19 |
이중 for문을 사용하여 역순으로 출력하기 예제 (0) | 2019.09.19 |
C언어 sizeof(‘a’) 크기가 4바이트 이유 (0) | 2019.09.14 |