为什么2 + 1和0结果为0?

Spa*_*ark 6 c++ visual-c++

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

int a = 2 + 1 & 0;
Run Code Online (Sandbox Code Playgroud)

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

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

Con*_*ius 17

由于&运营商之后才计算+运营商和3 & 0等于0.

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

int a = 2 + (1 & 0);
/* a == 2 */
Run Code Online (Sandbox Code Playgroud)


Pet*_*hev 5

+具有比更大的优先级&.是一个完整的运算符优先级表.