无法使用 visual studio 2010 直接进行这种简单的计算
std::cout<<(1 | 1 & 2);
//gives the value 1, was expecting 2 since 1 | 1 = 2 , the & 2 gives 2
std::cout<<( (1 | 1) & 2);
//gives the value 0, why is this different from above?
最佳答案
第一种情况:
1 & 2//因为 &
的优先级高于 |
01
&10
----
00
并将结果与 1 进行或运算,
1
OR 0
-----
1
第二种情况
1 | 1
01
OR 01
----
01
and AND 结果与 2,
01
& 10
-----
0
关于c++ - 按位运算的意外结果为什么 (1 | 1 & 2) 给出 1 而不是 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900086/