Wednesday, March 21, 2007
C언어] switch 문 (스위치) 사용법 예제; switch-case-default Statement x함수
switch문이란, 조건문의 일종인데, 여러 개의 if~else 문을 대신하여 간결하게 작성할 때 사용하는 것입니다. if~else 문이 중첩되어 있으면 가독성이 떨어지기 때문에 스위치문이 필요합니다.
그러나 switch문 다음의 괄호()에는 "x <= 0" 이런 식의 판단문이 들어갈 수는 없고, 정수형이나 문자형(char)의 숫자만 들어갈 수 있는 제약이 있습니다. double 등의 실수는 안되고 error C2450: switch expression of type 'double' is illegal 이런 에러가 납니다.
switch는 "함수"가 아니고 "키워드"입니다.
스위치문에서 주의해야 할 점은 각 case문 끝에 break; 를 꼭 붙여야 한다는 것입니다. break; 가 없으면, 그 아래쪽의 case문들까지 모두 실행되어 버립니다. break;를 만날 때까지 멈추지 않고 계속 실행됩니다.
의도적으로 break;를 생략한 경우가 아니라, 실수로 누락했을 때는 소스가 폭주하여 위험한 에러가 발생할 수 있습니다. 따라서 우선 무조건 break;를 붙여 놓고 소스의 흐름을 검토하는 것이 안전합니다.
default 라는 것은, 위의 case문들 중에서 어느 것도 해당되지 않을 때 실행할 코드입니다. 필요하지 않다면 default문이 없어도 됩니다.
소스 파일명: example.cpp
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
그러나 switch문 다음의 괄호()에는 "x <= 0" 이런 식의 판단문이 들어갈 수는 없고, 정수형이나 문자형(char)의 숫자만 들어갈 수 있는 제약이 있습니다. double 등의 실수는 안되고 error C2450: switch expression of type 'double' is illegal 이런 에러가 납니다.
switch는 "함수"가 아니고 "키워드"입니다.
switch (정수) {
case 상수 : 실행문; break;
case 상수 : 실행문; break;
case 상수 : 실행문; break;
case 상수 : 실행문; break;
default : 실행문; break;
}
case 상수 : 실행문; break;
case 상수 : 실행문; break;
case 상수 : 실행문; break;
case 상수 : 실행문; break;
default : 실행문; break;
}
스위치문에서 주의해야 할 점은 각 case문 끝에 break; 를 꼭 붙여야 한다는 것입니다. break; 가 없으면, 그 아래쪽의 case문들까지 모두 실행되어 버립니다. break;를 만날 때까지 멈추지 않고 계속 실행됩니다.
의도적으로 break;를 생략한 경우가 아니라, 실수로 누락했을 때는 소스가 폭주하여 위험한 에러가 발생할 수 있습니다. 따라서 우선 무조건 break;를 붙여 놓고 소스의 흐름을 검토하는 것이 안전합니다.
default 라는 것은, 위의 case문들 중에서 어느 것도 해당되지 않을 때 실행할 코드입니다. 필요하지 않다면 default문이 없어도 됩니다.
switch문 사용 방법 예제 소스
소스 파일명: example.cpp
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
#include <stdio.h>
#include <conio.h> // getch()
#include <ctype.h> // tolower()
int main(void) {
int i = 1;
/*
i 의 값이 1일 경우에는 "자장면"이 출력
i 의 값이 2일 경우에는 break가 없기에
군만두"와 "탕수육"이 한꺼번에 같이 출력
i 의 값이 3일 경우에는 "탕수육"이 출력
i 의 값이 4일 경우에는 "짬뽕"이 출력
만약 i 의 값이 그밖의 숫자일 경우에는 "그런 음식은 없습니다."가 출력
*/
switch (i) {
case 1 : printf("자장면\n"); break;
case 2 : printf("군만두\n"); // 아래의 탕수육도 실행됨
case 3 : printf("탕수육\n"); break;
case 4 : printf("짬뽕\n"); break;
default : printf("그런 음식은 없습니다."); break;
}
// 또한 아래와 같이, 문자(char)형으로도 판단할 수 있음
// 다만 double, float 같은 실수형은 불가능
char ch = (char) getch(); // 키보드에서 문자 1개 입력 받기
// 글자를 소문자로 변환
// (대소문자 구분 없이 입력받기 위해)
ch = (char) tolower(ch);
switch (ch) {
case 'a' : printf("A를 누르셨군요\n");
break;
case 'b' : printf("B를 누르셨군요\n");
break;
case 'c' : printf("C를 누르셨군요\n");
break;
case '9' : printf("9를 누르셨군요\n");
break;
case 0x0D : printf("Enter키를 누르셨군요\n");
break;
case 0x1B : printf("Esc키를 누르셨군요\n");
break;
default : printf("그밖의 문자...\n");
break;
}
return 0;
}
#include <conio.h> // getch()
#include <ctype.h> // tolower()
int main(void) {
int i = 1;
/*
i 의 값이 1일 경우에는 "자장면"이 출력
i 의 값이 2일 경우에는 break가 없기에
군만두"와 "탕수육"이 한꺼번에 같이 출력
i 의 값이 3일 경우에는 "탕수육"이 출력
i 의 값이 4일 경우에는 "짬뽕"이 출력
만약 i 의 값이 그밖의 숫자일 경우에는 "그런 음식은 없습니다."가 출력
*/
switch (i) {
case 1 : printf("자장면\n"); break;
case 2 : printf("군만두\n"); // 아래의 탕수육도 실행됨
case 3 : printf("탕수육\n"); break;
case 4 : printf("짬뽕\n"); break;
default : printf("그런 음식은 없습니다."); break;
}
// 또한 아래와 같이, 문자(char)형으로도 판단할 수 있음
// 다만 double, float 같은 실수형은 불가능
char ch = (char) getch(); // 키보드에서 문자 1개 입력 받기
// 글자를 소문자로 변환
// (대소문자 구분 없이 입력받기 위해)
ch = (char) tolower(ch);
switch (ch) {
case 'a' : printf("A를 누르셨군요\n");
break;
case 'b' : printf("B를 누르셨군요\n");
break;
case 'c' : printf("C를 누르셨군요\n");
break;
case '9' : printf("9를 누르셨군요\n");
break;
case 0x0D : printf("Enter키를 누르셨군요\n");
break;
case 0x1B : printf("Esc키를 누르셨군요\n");
break;
default : printf("그밖의 문자...\n");
break;
}
return 0;
}
tag: cpp
C언어 | C/C++ (Visual C++) 프로그래밍
잘
함
<< Home