실행 흐름

case는 실행을 시작할 위치이고, break가 실제 종료 지점이다

switch는 먼저 일치하는 레이블을 찾습니다. 하지만 레이블은 자동으로 실행을 멈추는 벽이 아니므로, 선택된 위치부터 break를 만날 때까지 문장이 이어질 수 있습니다.

1

표현식 평가

switch (grade)의 결과 값을 한 번 계산합니다.

2

레이블 선택

일치하는 case가 있으면 그 위치로 이동합니다.

3

문장 실행

선택된 레이블 아래 문장부터 순서대로 실행합니다.

4

break 확인

break;를 만나면 switch 다음 문장으로 나갑니다.

grade == 'B'일 때의 시작 위치

case 'A' 일치하지 않으므로 건너뜁니다.
case 'B' 여기서 실행을 시작합니다.
case 'C' 위쪽에 break가 없으면 이어서 실행됩니다.
default 일치 레이블이 없을 때만 시작점이 됩니다.

case 'B' 끝에 break;가 있으면

'B' 처리 코드만 실행한 뒤 switch 바깥으로 빠져나갑니다. 가장 흔하고 안전한 형태입니다.

break;가 없으면

case 'C' 아래 문장까지 이어서 실행될 수 있습니다. 이런 흐름을 fall-through라고 부릅니다.

의도적으로 이어지게 할 때

여러 case가 같은 처리를 공유한다면 비워 둔 case를 연속 배치하거나 C++17의 [[fallthrough]];로 의도를 표시합니다.

읽을 때의 기준

case는 “조건 블록”이 아니라 “실행 시작 레이블”입니다. 따라서 각 레이블 아래에서 어디서 멈추는지까지 함께 읽어야 합니다.