A && B
모두 참이어야 참
A == falseB를 보지 않아도 전체 결과는 false입니다.
B 생략
A == true전체 결과를 알기 위해 B까지 평가합니다.
B 평가
&&와 ||는 결과가 이미 확정되는 순간
남은 표현식 평가를 멈춥니다.
A && BA == falseA == trueA || BA == trueA == falseptr != nullptr
&&
ptr->member == value
왼쪽에서 포인터가 유효한지 먼저 확인하면, null인 경우 오른쪽 멤버 접근이 실행되지 않습니다.
보호 조건을 왼쪽에 둡니다.
왼쪽 결과가 false이면 위험한 오른쪽 접근은 생략됩니다.
부작용이 있는 함수 호출도 생략될 수 있음을 기억합니다.
복합 조건은 비교식 단위로 나눈 뒤, 왼쪽에서 오른쪽으로 어느 지점에서 결과가 확정되는지 확인합니다.