왼쪽 조건만으로 결과가 정해지면 오른쪽은 실행하지 않는다

&&||는 결과가 이미 확정되는 순간 남은 표현식 평가를 멈춥니다.

A && B

모두 참이어야 참
A == false
B를 보지 않아도 전체 결과는 false입니다.
B 생략
A == true
전체 결과를 알기 위해 B까지 평가합니다.
B 평가

A || B

하나만 참이어도 참
A == true
B를 보지 않아도 전체 결과는 true입니다.
B 생략
A == false
참인 조건이 있는지 B까지 평가합니다.
B 평가

안전한 접근 순서

ptr != nullptr && ptr->member == value

왼쪽에서 포인터가 유효한지 먼저 확인하면, null인 경우 오른쪽 멤버 접근이 실행되지 않습니다.

1

보호 조건을 왼쪽에 둡니다.

2

왼쪽 결과가 false이면 위험한 오른쪽 접근은 생략됩니다.

3

부작용이 있는 함수 호출도 생략될 수 있음을 기억합니다.

읽는 순서

복합 조건은 비교식 단위로 나눈 뒤, 왼쪽에서 오른쪽으로 어느 지점에서 결과가 확정되는지 확인합니다.