프로그램은 조건에 따라 다른 문장을 실행한다. `if`는 참과 거짓으로 갈라지고, `switch`는 정수 값의 갈래를 나눈다.

C++ 4. 조건으로 길을 나누기의 핵심 흐름도
그림. 조건은 여러 갈래 중 실행할 한 경로를 고른다.

if와 초기화

int hp = 12;
if (hp <= 0) {
    // 패배 처리
} else if (hp < 10) {
    // 위험
} else {
    // 계속
}

C++17부터 조건 앞에서 변수를 선언할 수 있다. `if (auto n = read(); n > 0)`처럼 쓰면 그 이름은 if문 안에서만 산다. 갈래 밖에서 실수로 쓰는 일을 막는다.

switch의 떨어짐

`switch`의 `case`는 멈추라고 말하기 전까지 아래로 떨어진다. 각 갈래 끝에 `break`가 있는지 확인한다. 의도적으로 떨어뜨릴 때는 `[[fallthrough]]`를 붙여 다음 사람에게 남긴다. 범위나 문자열 분기에는 `switch`보다 `if`가 맞다.

삼항 연산자 `cond ? a : b`는 두 결과의 타입이 맞을 때 짧은 선택에 쓴다. 문장 여러 개를 넣어야 하면 `if`로 돌아간다.