int a,b;
现在要交换a和b
最普通方法:
int temp;
temp = a;
a = b;
b = temp;
如果要求不使用临时变量
方法一:加减法(缺点:a+b可能越界)
a = a + b;
b = a - b;// b = (a+b) - b = a
a = a - b;// a = (a+b) - a = b
方法二:异或
a ^= b;
b ^= a; // b = (a^b)^b = a
a ^= b; // a = (a^b) ^ a= b
以上方法如果要求只用一行代码: a -= (b = (a += b) - b); 或者 a ^=(b ^= (a ^= b));
其他:例如
int i = 6;
int j = 12;
i = (j - i) + (j = i);
也可以实现交换,只是这里需要注意的是该表达式看起来只是声明两个变量。实际上里面包含了一个隐含的变量 (j-i)。
其他交换例如指针互换请参考:http://www.cnblogs.com/taoqianbao/archive/2011/09/21/2184315.html