隐藏了两年的语法错误
与或优先级问题,看看各位大虾有多少和我犯同样错误的?
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.
说了惭愧啊。。。
作者: windows_nt
补充:软件开发 , C++ ,