读书人

隐藏了两年的语法异常

发布时间: 2012-09-10 11:02:32 作者: rapoo

隐藏了两年的语法错误

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

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.

说了惭愧啊。。。

读书人网 >编程

热点推荐