我发现了这段代码,用异或运算符 ^
来交换两个数而不使用第三个变量。
代码:
int i = 25;
int j = 36;
j ^= i;
i ^= j;
j ^= i;
Console.WriteLine("i:" + i + " j:" + j);
//numbers Swapped correctly
//Output: i:36 j:25
现在我把上面的代码改成了等效的代码。
我的代码:
int i = 25;
int j = 36;
j ^= i ^= j ^= i; // I have changed to this equivalent (???).
Console.WriteLine("i:" + i + " j:" + j);
//Not Swapped correctly
//Output: i:36 j:0
现在,我想知道,为什么我的代码会给出错误的输出?