Fast Campus의 올인원 패키지: 컴퓨터 공학 5강으로 공부했다.
#define _CRT_SECURE_NO_WARNINGS
#include
int main(void) {
printf("학점을 입력하세요. ");
char grade;
scanf_s("%c", &grade);
switch (grade) {
case 'A':
printf("A 학점입니다.\n");
case 'B':
printf("B 학점입니다.\n");
case 'C':
printf("C 학점입니다.\n");
default:
printf("학점을 바르게 입력하세요.\n");
}
system("pause");
}
위 코드의 결과는
위와 같다.
첫 번째 case에만 걸리니까 'A 학점입니다.'만 나올 줄 알았는데?
알고 보니 한 case에 걸리면 그 아래 쪽의 모든 것을 만족시킨다고 한다.
case 'A' :
이후로 쭉 한 묶음으로 걸리는 느낌인 것 같다.
학점에 'B'를 넣어보면
이렇게 case 'B' : 이후가 모두 나오는 걸 알 수 있다.
그렇다면 의도대로, 딱 그 경우에 해당하면 끝나도록 하기 위해서는 아래와 같이 'break;'을 추가하면 된다.
#define _CRT_SECURE_NO_WARNINGS
#include
int main(void) {
printf("학점을 입력하세요. ");
char grade;
scanf_s("%c", &grade);
switch (grade) {
case 'A':
printf("A 학점입니다.\n");
break;
case 'B':
printf("B 학점입니다.\n");
break;
case 'C':
printf("C 학점입니다.\n");
break;
default:
printf("학점을 바르게 입력하세요.\n");
}
system("pause");
}
첫 번째 case에 걸리도록 'A'를 입력해주니 아래와 같은 결과가 나왔다.
break;으로 탈출! 원하는 결과가 나왔다.
추가 정리 두 가지.
1. 첫 줄에 '#define _CRT_SECURE_NO_WARNINGS' 이건 무엇?
visual studio 2019 버전을 쓰고 있는데,
이 버전에서는 안전성(?) 문제로 scanf 대신 scanf_s를 써야 한다.
여전히 scanf를 쓰고 싶다면 추가하는 코드가 바로 첫 줄 코드인 것이다.
이따 검색해야지 하고 그냥 따라적었는데...
몰랐어서 scanf_s 썼네... 하하
2. switch (확인 대상) {
case 값1: //값1에 부합할 때
case 값2: //값2에 부합할 때
default: //모든 경우에 해당.
}
해당하는 경우에 걸리면 쭉 모든 코드가 실행되므로
의도에 따라 'break;'을 넣어주어야 한다.
왜 이렇게 불편하게 했지 싶었는데 이걸 응용하면 어떤 경우에는 보다 단순한 코드를 짤 수 있을 것 같다.
'IT' 카테고리의 다른 글
[marketing] 마케팅 기초 - 책 '공모전 무작정 따라하기' (0) | 2019.11.20 |
---|---|
[python] 내가 필요해서... 가계부 프로그래밍 (0) | 2019.11.20 |
[git/github] 책 '만들면서 배우는 Git+GitHub 입문'으로 공부 (0) | 2019.11.09 |
댓글