switch 문

switch 값 분기

case 라벨, break, default의 역할을 분리해서 보면 fall-through가 의도인지 실수인지 판단할 수 있습니다.

대상

하나의 표현식을 평가

switch 괄호 안 값은 여러 case 상수와 차례로 비교됩니다.

switch (menu)
case

일치 지점으로 이동

case는 조건식이 아니라 값 라벨이므로 범위 비교를 직접 쓰지 않습니다.

case 1:
break

다음 case로 흐르는 것을 막음

break가 없으면 아래 case 문장까지 이어지는 fall-through가 발생합니다.

break;
default

어느 case도 아닌 경우

예상 밖 값에 대한 처리나 오류 메시지를 한곳에 둡니다.

default:
fall-through의도적으로 흘려보낼 때는 주석이나 속성으로 명확히 표시합니다.
비교 형태크다, 작다, 범위처럼 조건이 복잡하면 if-else가 더 적합합니다.
열거형enum class와 함께 쓰면 상태 후보를 case로 나열하기 쉽습니다.