320x100
C언어 학습을 위한 자습용 코드와 설명을 작성하고 있습니다.
교재 : 혼자 공부하는 C 언어 (hanbit.co.kr)
Switch~ Case 문에 관하여
switch문은 if문과 다르게 case를 따로 두어, 다양한 경우를 표현할 수 있습니다.
랭킹(rank)을 입력받아 변수에 저장, rank별 상금(m)을 구하는 코드를 진행해 보았습니다.
case를 통해 여러 개의 경우의 수를 골라서, 하나의 상수만을 반환할 수 있습니다.
Visual studio를 통해 프로젝트를 생성하여, 소스 파일에 아래의 코드와 같이 C 파일을 제작하여 표현했습니다.
#include <stdio.h>
int main(void)
{
int rank, m = 0;
printf("랭크를 입력하라(1~5) : ");
scanf("%d", &rank);
switch (rank) // rank의 값이 얼마인지 확인함
{
case 1: // rank가 1이면
m = 300; // m = 300을 수행하고
break; // 블록을 벗어나 22행으로 이동함
case 2: // rank가 2면
m = 200; // m = 200을 수행하고
break; // 블록을 벗어나 22행으로 이동함
case 3: // rank가 3이면
m = 80; // m = 80을 수행하고
break; // 블록을 벗어나 22행으로 이동함
case 4 : // rank = 4면
m = 40; // m = 40을 수행하고
break; // 블록을 벗어나 22행으로 이동함
default: // rank와 일치하는 case의 값이 없으면
m = 10; // m = 10을 수행하고
break; // 블록을 벗어나 22행으로 이동함
}
printf("m : %d\n", m);
return 0;
}
디버그 콘솔로 진행합니다. 디버그 무시하고 실행(ctrl + F5)시, 입력할 수 있는 커맨드창이 도출되고, 1 이상의 정수를 입력하면 보입니다.
상수 1을 입력하고 있습니다.
2 입력 시 m이 200을 반환합니다.
간단한 코드이기 때문에, 다른 정수를 입력해도 큰 문제는 없습니다.
간단한 에러 발생
위 코드에서 break문 제외시 case 1 ,2,3,4를 모두 무시하기 때문에 default의 상태로 바로 넘어갑니다.
break를 없앤 코드입니다.
#include <stdio.h>
int main(void)
{
int rank, m = 0;
printf("랭크를 입력하라(1~5) : ");
scanf("%d", &rank);
switch (rank) // rank의 값이 얼마인지 확인함
{
case 1: // rank가 1이면
m = 300; // m = 300을 수행하고
// break 제외 시 실험
case 2:
m = 200;
case 3:
m = 80;
case 4 :
m = 40;
default:
m = 10;
}
printf("m : %d\n", m);
return 0;
}
m 값이 전혀 다른 결과를 도출하는 것을 알 수 있습니다.
이 때문에, 적절한 위치에 break를 삽입하는 작업이 필요한 것을 알 수 있습니다.
728x90
'Programming Language > C' 카테고리의 다른 글
[C언어] 월별로 일수 계산하는 프로그램 (0) | 2023.03.13 |
---|---|
[C언어] 혼공C 예제 연습_포인터와 배열에 대해서 (0) | 2023.03.10 |
[C언어] 혼공C 예제 연습_1부터 n까지 자동으로 합계내는 알고리즘 (0) | 2023.03.07 |
[C언어] 혼공C 예제 연습_반복문을 활용한 구구단, 교차되는 별 찍기 코드 (0) | 2023.03.05 |