如何将a,b的值进行交换,并且不使用任何中间变量?

如使用:

a = a + b; b = a - b; a = a + b;

这样做有一个问题:当a,b相加的时候有可能产生越界,那么这种办法肯定不是最好的啦(两个数相加的时候,好的思维习惯就是考虑会不会越界,这个思想常被腾讯考),那么这种方法一定不是最佳方法了。

然而用异或语句比较容易,不用担心越界的问题。

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


按位异或运算符“^”是双目运算符,其功能是参与运算的两数各对应的二进制位相异或,当对应的二进制位相异时,结果为1。参与运算数仍以补码形式出现。

如a = 5 , b = 9,进行转换。

例如9 ^ 5可写成算式如下:

0000 1001 ^ 0000 0101 = 0000 1100 (十进制数为12)

#include<stdio.h>  int main() { 	int a = 5 , b = 9;  	a = a ^ b; 	b = a ^ b; 	a = a ^ b;  	printf("a = %d\n" , a); 	printf("b = %d\n" , b);  	return 0; }