이번 Step에서 잡아야 할 것

  • switch는 보통 정수/문자/열거형(enum)처럼 “딱 떨어지는 값” 분기에 적합
  • case 끝의 break가 흐름을 끊는다 (없으면 다음 case까지 실행될 수 있음)
  • default는 “예외/잘못된 입력”을 안전하게 처리하는 보험

문법

switch (choice) {
    case 0:
        cout << "가위를 냈습니다.";
        break;
    case 1:
        cout << "바위를 냈습니다.";
        break;
    case 2:
        cout << "보를 냈습니다.";
        break;
    default:
        cout << "잘못됨";
        break;
}

실전에서는 “숫자 의미”가 헷갈리지 않게 enum을 같이 쓰면 더 좋습니다.

enum RPS { Scissor = 0, Rock = 1, Paper = 2 };

RPS choice = Rock;
switch (choice) {
    case Scissor: cout << "가위를 냈습니다."; break;
    case Rock:    cout << "바위를 냈습니다."; break;
    case Paper:   cout << "보를 냈습니다."; break;
    default:      cout << "잘못됨"; break;
}

break

  • breakswitch즉시 종료합니다.
  • break가 없으면 → fall-through (다음 case까지 이어서 실행될 수 있음)
  • C++은 break를 빠뜨려도 컴파일 에러가 나지 않아서, 초반에는 case마다 break를 항상 쓰는 습관이 안전합니다.
switch (choice) {
    case 0:
        cout << "0";
        // break 없음!
    case 1:
        cout << "1";
        break;
}
// choice가 0이면 "01"이 출력될 수 있음

if-else if vs switch-case

  • switch-case: “값 하나”로 분기할 때 가독성이 좋음
    • 예: 메뉴 선택(0/1/2), 상태 코드, 간단한 커맨드 처리
  • if-else if: 범위 비교/복합 조건에 강함
    • 예: hp <= 0, score >= 90 && score <= 100 같은 조건

체크 질문 (스스로 답해보기)

  • switch에서 break를 빼먹으면 어떤 일이 생길까?
  • switchif-else if보다 잘 맞는 상황은 어떤 경우일까?
  • 숫자 0/1/2 대신 enum을 쓰면 뭐가 좋아질까?

profile
李家네_공부방

0개의 댓글