【发布时间】:2021-03-07 12:40:37
【问题描述】:
当我像下面这样写时
int [] test = {4};
int a = test[0]^=1;
int b = test[0]^1;
我可以得到这个输出。
输出
test[0]^=1 : 5 a : 101
test[0]^1 : 4 b : 100
我认为 test[0] = 100 -> test[0]^1 = 101 但事实并非如此。
100
XOR 1
----------
101
你能解释一下有什么不同吗?
【问题讨论】:
-
test[0]^=1是语句,test[0]^1是表达式。 -
在第一次 XOR 操作后,数组 test[0] 中的值也会更新,为什么在第二次 XOR 后你会得到相同的结果。 test[0]^=1 等价于 test[0]= test[0] ^ 1
-
我想说,不清楚您的问题是否是“
test[0]^=1是如何工作的?”或“按位运算符如何工作?”。我想在你的情况下两者都是,但最好澄清你到底在问什么,因为这两个概念(复合赋值和按位)是两个完全不同的主题。