#include<stdio.h>
int main()
{
int i=4, j=8;
printf("%d, %d, %d\n", i|j&j|i, i|j&j|i, i^j);
return 0;
}
输出为: 12,12,12
为什么显示上面的输出?任何人都可以解释一下吗?
答案 0 :(得分:3)
i | j&j | i
在i
,i
和j&j
之间按位OR(&
优先于|
)。这相当于i | j
,所以:
i = 0b00000100 = 4
j = 0b00001000 = 8
i|j = 0b00001100 = 12
i ^ j
这里与i | j
相同,因为在j和i中没有单个位设置为1。
答案 1 :(得分:0)
阅读http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B,特别是运营商优先级部分应该明确这一点。
您正在使用按位和按位或按位异或。