2013-04-08 1 views

답변

1

내 컴파일러가이 두 가지 순서로 순서를 매길 가능성이 있습니까?

아니요. &&은 첫 번째 표현이 true 인 경우에만 두 번째 표현식을 평가합니다 (덧붙여 전체 표현식에 시퀀스 포인트가 추가됨).

& & 연산자 그룹은 왼쪽에서 오른쪽입니다. 피연산자는 모두 문맥 상 bool 유형으로 변환됩니다 (4 절). 두 피연산자 모두 true이면 결과가 true이고 그렇지 않으면 false입니다. &과 달리 &&은 왼쪽에서 오른쪽으로의 평가를 보장합니다. 첫 번째 피연산자가 거짓이면 두 번째 피연산자는 계산되지 않습니다.

결과는 bool입니다. 두 번째 표현식이 평가되면 첫 번째 표현식과 관련된 모든 값 계산 및 부작용은 두 번째 표현식과 관련된 모든 값 계산 및 부작용이 발생하기 전에 순서가 지정됩니다. (C++ 11 [expr.log.and]; 강조 추가)

+0

나에게 그 정보를 제공해 주셔서 감사합니다. 표준 문서를 살펴 보겠습니다. – summereno

+1

약간의주의가 필요합니다 : 이것은 내장 연산자 &&에 대해 사실입니다. 과부하 연산자 && (여기 **는 ** 여기에 해당하지 않음)는 평가 또는 단락의 순서를 보장하지 않습니다. –

관련 문제