隐藏了两年的语法错误

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

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.

说了惭愧啊。。。

原文地址:https://www.cnblogs.com/wwwroot/p/2719347.html