2017-02-05 2 views
-1

이 코드의 출력이 count==4이 아닌 이유는 무엇입니까? operator--operator!보다 우선합니다. 맞습니까? 그들은 모두 접두사이고 어쨌든 다른 표현식에 적용되는으로 --!연산자!() 및 연산자 -() if 조건

int main() 
{ 
    int found = 0, count = 5; 
    if (!found || --count == 0) 
     cout << "danger" << endl; 
    cout << "count=" << count<< endl; 
} 
+0

[단락 회로 평가] (https://en.wikipedia.org/wiki/Short-circuit_evaluation) –

+0

표현식에 다른 연산자가 있습니다. '!|'는 단락 평가를하기 때문에 ('! found '가 먼저 평가 될 것이고,'--count == 0'만이 평가 될 것이기 때문에)'!'과'--'의 상대적 우선 순위는 중요하지 않습니다. '! found'가 0이 아닌 경우 평가, 그렇지 않은 경우 평가). – Peter

+0

단락에 대해 알고 있지만 접두사가 최우선 우선으로 감소하지 않습니까? 내가 처음에 카운트를 4로 줄인 다음 조건을 확인해서는 안됩니까? –

답변

0

우선 순위는 여기에 문제가되지 않습니다. 당신이 관찰하고있는 것은 ||의 단락입니다 : 왼쪽 피연산자 true이므로 OR의 결과는 오른쪽 피연산자의 값과 상관없이 참이므로 평가할 시간을 낭비 할 필요가 없으므로 그렇지 않습니다.

+0

정말 고마워요! :) –