switch case
if, else if, else 문으로 여러 조건을 비교할 수 있었지만 가독성이 좋지 않다.
if 문은 되도록이면 최선을 다해 한 두가지 경우의 수가 나오는 경우에만 사용하는 편이 코드를 다시 읽게 될 때 이해하기가 편하다.
여러 경우의 수가 나오는 경우 swtich case 문을 사용할 수 있다.
문법:
switch (비교할 대상)
{
case 비교값1:
break;
case 비교값2
break;
deafult:
break;
}
switch (비교 대상)
비교할 대상으로 올수 있는 값은 기본 타입
char, short, int, long, float, double
case 비교값:
상수값만 올 수 있다.
case 문은 마치 if (비교대상 == 비교값) 같은 역할을 한다.
case 문의 끝은 반드시 break; 로 처리해야 한다.
default:
마치 if, else if 후 else 구문 같은 역할을 한다.
case 문에 모두 만족하지 않으면 default 구문이 실행된다.
예)
int done = 0;
char c = getchar();
switch (c) {
case 'q':
done = 1;
break;
default:
break;
}
switch case 의 함정
break 문
case 조건문1:
case 조건문2:
break;
조건문1 과 조건문2 사이에 break 문이 없다.
만약에 조건문1과 일치하여 조건문1이 수행되고 나면 조건문2가 실행된다.
break; 문을 만나지 않으면 계속 실행이 된다.
간혹 이러한 특성이 도움이 되기도 하지만 실수로 break; 문을 빠뜨리는 경우가 많다.
주의하자.
-코드-
#include "pch.h"
#include <iostream>
#include <conio.h> // _getch()를 실행하기 위해 참조.
// 자동완성기능의 강력함은 ENUM과 같이 써봐야 한다.
enum PLAYERJOB
{
FIGHTER,
ARCHER,
MAGE,
};
int main()
{
int Number = 2;
int b = 0;
int c = 100;
switch (Number)
{
case 0:
{
// 지역변수의 내부 선언이 안된다.
// 사용은 된다.
// 쓸려면 이렇게 스택을 따로 만들어내는 수가 있다.
// int d = 100; 는 에러를.
// int d;
// d = 100; //된다
c = 100;
printf_s("case 0:\n");
break;
}
case 1:
printf_s("case 1:\n");
break;
case 2:
printf_s("case 2:\n");
break;
default:
printf_s("Default:\n");
break;
}
__int8 i8 = 'b';
char ch = '0';
switch (_getch())
{
case 'a':
case 'A':
printf_s("a || A\n");
break;
case 'b':
case 'B':
printf_s("b || B\n");
break;
case 'c':
case 'C':
printf_s("c || C\n");
break;
default:
break;
}
}
'게임 프로그래밍 > C++ 기초' 카테고리의 다른 글
C++ WHILE ,DO WHILE (반복문) (0) | 2019.01.25 |
---|---|
C++ for (반복문) (0) | 2019.01.25 |
C++ atoi(StringToInt) ,itoa(IntToString) 구현하기 (2) | 2019.01.25 |
C++ IF (조건문) (0) | 2019.01.24 |
C++ 논리연산자 (0) | 2019.01.23 |