與或優先級問題,看看各位大蝦有多少和我犯同樣錯誤的?
x = 1, y = 0, z = -1;
q = ++x || ++y && ++z;
q會等於0?還是1?
你認為呢?
看分析:
優先級 操作符
1 () [] -> .
::
! ~ ++ --
2 - (unary) * (dereference)
& (address of) sizeof
3 ->* .*
4 * (multiply) / %
5 + -
6 << >>
7 < <= > >=
8 == !=
9 & (bitwise AND)
10 ^
11 |
12 &&
13 ||
14 ? :
15 = += -= etc.
16 ,
注意:由於||和&&都是從左向右執行,而&&優先級大於||,所以實際執行效果是q=(++x)||(++y && ++z);
所以q的結果是1。
我原先一直停留在&&和||的優先級相同,共同存在時都是自左向右執行,結果就成了0.
說了慚愧啊。。。