c++/기초

switch

코드망령 2026. 5. 29. 17:53

switch

하나의 변수 값을 기준으로 여러 경우를 나누어 실행하는 제어문이다.

주로 같은 변수에 대해 여러 조건을 비교할 때 사용한다.


기본 문법

switch (변수)
{
case 1:
    실행문;
    break;

case 2:
    실행문;
    break;

case 3:
    실행문;
    break;

default:
    실행문;
    break;
}

동작 원리

switch의 변수 값과 일치하는 case를 찾아 해당 위치로 이동한 후 코드를 실행한다.

int num = 2;

switch (num)
{
case 1:
    cout << "1번";
    break;

case 2:
    cout << "2번";
    break;

case 3:
    cout << "3번";
    break;
}

실행 결과

2번

동작 과정

switch (2)

case 2:

cout << "2번";

break;

switch 종료

break

현재 case의 실행을 종료하고 switch문을 빠져나가는 역할을 한다.

switch (num)
{
case 1:
    cout << "1번";
    break;
}

특징

  • 현재 case만 실행하고 종료한다.
  • 대부분의 경우 case 끝에 작성한다.
  • 작성하지 않으면 아래 case까지 계속 실행된다.

break가 없는 경우

int num = 1;

switch (num)
{
case 1:
    cout << "1번" << endl;

case 2:
    cout << "2번" << endl;

case 3:
    cout << "3번" << endl;
}

실행 결과

1번
2번
3번

이유

case 1에서 시작했지만 break가 없으므로 아래의 모든 case를 계속 실행한다.

이 현상을 Fall Through(폴스루) 라고 한다.


default

어떤 case와도 일치하지 않을 경우 실행되는 구문이다.

int num = 10;

switch (num)
{
case 1:
    cout << "1번";
    break;

case 2:
    cout << "2번";
    break;

default:
    cout << "해당 번호 없음";
    break;
}

실행 결과

해당 번호 없음

여러 case를 같은 코드로 처리하기

int month = 1;

switch (month)
{
case 12:
case 1:
case 2:
    cout << "겨울";
    break;

case 3:
case 4:
case 5:
    cout << "봄";
    break;
}

실행 결과

겨울

switch문에서 사용 가능한 자료형

사용 가능

int
char
enum
enum class

예시

char grade = 'A';

switch (grade)
{
case 'A':
    cout << "우수";
    break;
}

사용 불가능

float
double
string

예시

string name = "홍길동";

switch (name) // 오류
{
}

switch는 정수형 계열 값만 비교할 수 있다.


if문과 switch문의 차이

if문

범위 비교 가능

if (score >= 90)
{
    cout << "A";
}
else if (score >= 80)
{
    cout << "B";
}

switch문

값 비교만 가능

switch (score)
{
case 100:
    cout << "A";
    break;
}

switch문 사용이 적합한 경우

  • 메뉴 선택
  • 숫자 입력 처리
  • 상태(State) 처리
  • enum 값 분기 처리
enum class Menu
{
    Start = 1,
    Option,
    Exit
};

switch (menu)
{
case Menu::Start:
    break;

case Menu::Option:
    break;

case Menu::Exit:
    break;
}

정리

  • switch는 하나의 변수 값을 기준으로 여러 경우를 처리하는 제어문이다.
  • case는 비교할 값을 의미한다.
  • break를 사용하면 해당 case만 실행하고 종료한다.
  • break가 없으면 아래 case까지 계속 실행된다(Fall Through).
  • default는 일치하는 case가 없을 때 실행된다.
  • 주로 메뉴 선택이나 상태 분기에 사용한다.
  • 범위 비교가 필요하면 if문을 사용하는 것이 적합하다.

'c++ > 기초' 카테고리의 다른 글

배열  (0) 2026.05.29
반복문  (0) 2026.05.29
조건문(if, else, else if)  (0) 2026.05.29
연산자  (0) 2026.05.22
자료형  (0) 2026.05.22