java与C/C++的不同之处之一(小发现)-CSDN博客

38 阅读1分钟

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);
	}	
}

\

补一句废话:有时朋友说话不大好听,不过不必太在意其说话的方式。或许这就是诤友吧 ,哈哈。

\