java与C/C++的不同之处之一
写java程序是出现了错误,调了一会发现了C与java在计算上的一点不同之处
在执行 a ^= b ^= a ^= b;语句时,C的结果是交换这两个int变量的值,java则不是。
在执行 a ^= b; b ^= a; a ^= b; 时,二者结果又一样了,待到考完试,再细看一下。
(这两种语言的等号运算序都是从右至左呀)
\
以下是提炼出来的测试片段
#include <stdio.h>
int main()
{
int a = 1, b = 2;
// a ^= b;
// b ^= a;
// a ^= b;
a ^= b ^= a ^= b;
printf("%d %d\n", a, b);
return 0;
}
\
public class Main {
public static void main(String[] args) {
int a = 1, b = 2;
// a ^= b;
// b ^= a;
// a ^= b;
a ^= b ^= a ^= b;
System.out.printf("%d %d\n", a, b);
}
}
\
补一句废话:有时朋友说话不大好听,不过不必太在意其说话的方式。或许这就是诤友吧 ,哈哈。
\