프로그램은 조건에 따라 다른 문장을 실행한다. `if`는 참과 거짓으로 갈라지고, `switch`는 정수 값의 갈래를 나눈다.
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`로 돌아간다.
댓글
0개아직 댓글이 없습니다.