为什么2 + 1& 0结果是0?

时间:2011-12-29 15:55:27

标签: c++ visual-c++

在VC2008中,我输入了以下代码:

int a = 2 + 1 & 0;

这个表达式的结果是 a = 0

为什么结果是0而不是2?

2 个答案:

答案 0 :(得分:17)

因为&运算符is evaluated after +运算符和3 & 0等于0

当然,您可以在表达式周围放置大括号以更改评估顺序。 E.g:

int a = 2 + (1 & 0);
/* a == 2 */

答案 1 :(得分:5)

+的优先级高于&Here是运算符优先级的完整表。