Java中编写如下程序: int a = 3, b = 5; a ^= b ^= a ^= b; System.out.println(a + " " + b);

结果为:0 3。请问为什么不是交换?在C/C++中答案应该是5 3。
2024-11-30 17:08:20
推荐回答(3个)
回答1:

这种写法在C和C++能被正确运行,但在java中是肯定不行的,所以你只能分开写,a ^= b;b ^= a ;a^= b;

究其原因,java中操作符的操作数是从左向右求值的。

具体的,你看看java解惑这本书,对这个问题有讲解。

回答2:

在C/C++中,可以尝试有符号和无符号,再看答案,也许就不一样了。

回答3:

a ^= b;b ^= a ;a^= b;