c
08_조건문2(switch, case)
RongBee
2023. 3. 27. 20:58
switch case문도 if조건문과 같이 조건에 맞는 특정한 명령을 실행하는 명령어이다.
switch case문은 여러가지 조건들이 있을 때 사용하는 것이 효율적이고,
if문을 여러개 쓰는 것보다 가독성과 유지보수성이 향상된다는 장점이 있다.
#include<stdio.h>
int main()
{
int num = 2;
switch(num)
{
case 1: // num이 1일 때
printf("num은 1입니다.\n");
case 2: // num이 2일 때
printf("num은 2입니다.\n");
case 3: // num이 3일 때
printf("num은 3입니다.\n");
case 4: case 5: // num이 4나 5일 때
printf("num은 4이거나 5입니다.\n");
default : // 위의 모든 케이스 형식이 아니라면 실행
printf("num은 1, 2, 3, 4, 5가 아닙니다.\n");
}
return 0;
}
위의 switch case 예시처럼 num은 2이므로 "num은 2입니다."의 문장이 출력되야한다.
하지만 결과는 밑의 사진처럼 이렇게 나오게 된다.
도대체 왜 2말고도 다른 값들이 나오는 걸까?
switch문은 위에서 아래로 조건을 검사하면서 조건에 맞지 않는다면 아래로 내려가는 방식을 가진다.
그래서 조건에 맞은 후에도 조건을 만족한 문장 아래로 내려가면서 계속 실행되고 있는 것이다.
그래서 조건에 충족할 시 break라는 명령어를 통해 멈춰준다면 우리가 원하는 값을 얻을 수 있다.
#include<stdio.h>
int main()
{
int num = 2;
switch (num)
{
case 1: // num이 1일 때
printf("num은 1입니다.\n");
break;
case 2: // num이 2일 때
printf("num은 2입니다.\n");
break;
case 3: // num이 3일 때
printf("num은 3입니다.\n");
break;
case 4: case 5: // num이 4나 5일 때
printf("num은 4이거나 5입니다.\n");
break;
default: // 위의 모든 케이스 형식이 아니라면 실행
printf("num은 1, 2, 3, 4, 5가 아닙니다.\n");
}
return 0;
}
break를 추가
이런 식으로 switch case를 사용하여
내가 만들고자 하는 게임 캐릭터나 몬스터의 상태를 확인하여
특정한 행동을 하게끔 만들 수 있게 되었다.
