在VC2008中,我输入了以下代码:
int a = 2 + 1 & 0;
这个表达式的结果是 a = 0
为什么结果是0而不是2?
答案 0 :(得分:17)
因为&
运算符is evaluated after +
运算符和3 & 0
等于0
。
当然,您可以在表达式周围放置大括号以更改评估顺序。 E.g:
int a = 2 + (1 & 0);
/* a == 2 */
答案 1 :(得分:5)
+
的优先级高于&
。 Here是运算符优先级的完整表。