一行上的多个分配未按预期工作
我试图交换两个s - 在示例中,并在没有库函数的情况下在一行中执行此操作。int
x
y
所以我从这个开始:
int x = 4;
int y = 3;
System.out.println(x);
System.out.println(y);
x ^= y;
System.out.println(x);
System.out.println(y);
y ^= x;
System.out.println(x);
System.out.println(y);
x ^= y;
System.out.println(x);
System.out.println(y);
输出符合预期。到目前为止,一切都很好。4, 3, 7, 3, 7, 4, 3, 4
接下来是这个:
int x = 4;
int y = 3;
System.out.println(x);
System.out.println(y);
y ^= (x ^= y);
System.out.println(x);
System.out.println(y);
x ^= y;
System.out.println(x);
System.out.println(y);
输出再次如预期的那样。到目前为止还是不错的。4, 3, 7, 4, 3, 4
最后是这个:
int x = 4;
int y = 3;
System.out.println(x);
System.out.println(y);
x ^= (y ^= (x ^= y));
System.out.println(x);
System.out.println(y);
在此阶段,输出变为 。现在我知道这是因为当时作业没有完成的结果 - 为什么会发生这种情况?为什么实际不赋值到变量,以便它成为最后一个赋值?4, 3, 0, 4
0
4 ^ 4
x
x ^= y
7
x
7 ^ 4