2017-12-18 84 views
-3
int x=0, y=0, z=0; 
z = (x==1) && (y=2); 
printf("%d ", y); 

我在想輸出是0. 爲什麼輸出不是2?爲什麼變量y是0,不是2?

+3

瞭解[* short-circuit evaluation *](https://en.wikipedia.org/wiki/Short-circuit_evaluation)。 –

+2

你爲什麼認爲它應該是2? –

+1

基本屬性,RHS僅在LHS爲TRUE時評估, –

回答

0

,因爲如何ç涉及邏輯運算符:

因爲x == 1返回「假」,沒有必要檢查RHS爲了得出結論,運營商的最終結果& &是假。因此,RHS未被評估,並且y保持其先前的值。

+0

呃,沒有正確讀出問題就衝過答案......我絕對應該得到更多的dv's ^^ –

+0

運算符的結果是z,它不是輸出結果。實際上,對y的賦值從來不會發生,正如對這個問題的評論。 – ROX

+0

你的回答錯誤?我認爲這就是發生的事情。 – zee