隐藏了两年的语法异常

隐藏了两年的语法错误

与或优先级问题,看看各位大虾有多少和我犯同样错误的?

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.

说了惭愧啊。。。