1
#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
为什么上面的输出显示?任何人都可以解释我?这段代码做了什么?
#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
为什么上面的输出显示?任何人都可以解释我?这段代码做了什么?
i | j&j | i
是逐位OR i
,i
和j&j
之间(&
超过|
具有优先级)。这相当于i | j
,所以:
i = 0b00000100 = 4
j = 0b00001000 = 8
i|j = 0b00001100 = 12
i^j
这里是一样的i | j
因为是设置为1无论是在j和我没有任何单个位。
阅读http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B特别是运算符优先级部分应该清楚。
您正在使用按位,按位或按位XOR。
认真吗?你甚至试图读你的问题?您将**源代码**发布在标题和正文中的问题中?另外:你没有告诉我们你想要“解决”哪个问题:你提供源和输出,输出有什么问题? – 2011-02-18 09:23:28