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

+ Recent posts