OneDev
[C] 15. 조건문 -switch 문 본문
switch 문의 기본 구조는 다음과 같다.
switch ( 변수 ) {
case 값1 : // 세미콜론(;) 이 아니라 콜론(:) 임에 유의
명령들
break;
case 값2:
명령들
break;
....
....
case 값n:
명령들
break;
default: // if-else 구문에서 else와 같은역할
명령들
break;
}
(1) 맨 윗줄 ( 변수 ) 란에는 아래에 나오는 값1, 값2,.... 들과 비교할 변수가 들어가게 된다.
(2) switch 문에 사용될 변수는 반드시 정수 데이터를 보관하는 변수여야 한다.
다시말해 변수 부분에 들어갈 수 있는 데이터 타입은 char. short, int, long 중에 하나여야 한다.
만약 float 이나 double 등의 데이터 타입을 가진 변수를 사용하게 되면 컴파일시 오류가 나게 된다.
(3) 값1, 값2, .... 등 "값" 에 위치하는 변수들은 무조건 상수여야 한다.
(4) break문을 빠뜨린다면 아래의 명령들을 모두 수행하게 되니 break문을 빠뜨리지 않도록 조심하자.
(5) switch 문은 if-else 문과 상당히 비슷하게 생겼는데, 왜 굳이 switch 문 같은 것을 만든 것일까?
결론을 말하자면 내부적으로 처리하는 방법이 달라 성능에 차이가 나기 때문이다.
switch 문과 if-else 문이 내부적으로 어떻게 다른지는 어셈블리어를 알아야 정확히 이해할 수 있기때문에 더이상 자세한 설명은 생략하도록 하겠다.
(6) 한 가지 변수에 대해 여러가지 경우를 나눌 때에는 switch 문이 더 효과적이다 정도만 알고있으면 될 듯 하다.
(7) default 는 if -else 문의 else 처럼 이도 저도 아닌 case들에 대해 어떤 동작을 수행할지 알려주는 부분이다.
마지막으로 예시를 보자.
아래의 코드는 우리가 정수 1,2,3등을 입력하면 이를 한글 "일", "이", "삼".으로 출력하는 프로그램이다.
1,2,3 외에 다른 숫자가 입력되는 경우 "1,2,3이 아니네요" 라는 문구를 출력하게 설정했다.
#include <stdio.h>
int main() {
int input;
printf("숫자 읽기\n");
printf("숫자 : ");
scanf("%d", &input); // input 입력
switch (input) {
case 1: // 입력한 input == 1인 경우
printf("일 \n");
break;
case 2: // input == 2 인 경우
printf("이 \n");
break;
case 3: // input == 3 인 경우
printf("삼 \n");
break;
default: // 다른 모든 경우
printf(" 1,2,3 이 아니네요 \n");
break;
}
return 0;
}
'Language > C' 카테고리의 다른 글
[C] 17. 배열(Array)(2) - 고차원 배열(2차원 배열, 3차원 배열,...) (0) | 2022.07.26 |
---|---|
[C] 16. 배열(Array) (1) (0) | 2022.07.25 |
[C] 14. 반복문 탈출 - break / continue (0) | 2022.07.23 |
[C] 13. 반복문 - while문/do while (0) | 2022.07.22 |
[C] 12. 반복문 - for문 (0) | 2022.07.21 |