C语言 异或 运算符的使用

为什么结果是1000而不是1100?????
2024-11-06 09:47:38
推荐回答(2个)
回答(1):

异或的意思就是相异为真。。
现在问题主要是出现在这一句。。
b[--i]=a[j]^a[--j];
注意啦。。编译器编译的时候是从后向前的。。也就是先算a[--j],这样j就先自减了。。j从3变为2。。然后再算a[j],因为j是2,调用的时候,就是调a[2]
所以整个语句第一次执行的时候就是b[2]=a[2]^a[2],结果显然是0;
所以输出的是1100。。
有什么地方解释不清的可以再问我。。嘿嘿。。

回答(2):

奇了 这句始终输出的是 0printf("%d",a[j]^a[--j]);但是用printf("%d",a[3]^a[2]);却能输出 1 想不通。。。。。继续研究