while (node != NULL && node->data != target) 안전한 방법인가요?
글쓴이: 익명 사용자 / 작성시간: 토, 2017/06/03 - 5:17오후
while (node != NULL && node->data != target) { ... }
이렇게 node가 NULL이 아니고 data가 target과 다를때 참인데
지금까지 경험한 컴파일러는 node가 NULL 이라면 node->data != target 구문을 실행하지 않는데
과연 이게 안전한 방법인가요?
즉 && 연산에서 첫번째 식이 거짓이면 2번째 식을 검사를 하지 않는데
이게 표준?인지 궁금합니다.
&&연산에서 첫번째 식이 거짓인데 2번째 식을 검사하는 경우도 있나요?
Forums:
Short-circuit evaluation,
Short-circuit evaluation, minimal evaluation, or McCarthy evaluation
한국어로는 "단축 평가"라고들 부르는 것 같더군요.
https://en.wikipedia.org/wiki/Short-circuit_evaluation
결론부터 말씀드리자면, C언어를 비롯해 short-circuit evaluation을 지원하는 많은 언어들에서 100% 안전하며, 굉장히 자주 쓰이는 용법입니다.
&& 연산자는 첫째 피연산자가 false일 때, || 연산자는 첫째 피연산자가 true일 때 둘째 피연산자를 평가하지 않습니다.
감사합니다!
답변 감사합니다.
도움 많이 됐습니다.
댓글 달기