大家比较常用的是借助第三个变量来进行交换,代码如下:
void swap(int& a,int& b)
{
int temp = a;
a = b;
b = temp;
}
上述代码G++编译通过,GCC通不了,不懂。
第二种是通过加减法来实现;代码:
#define swap(a,b) \
{ \
a = a+b; \
b = a-b; \
a = a-b; \
}
第三种是通过按位异或进行变量交换;代码:
#define swap(a,b) \
{ \
a = a^b; \
b = a^b; \
a = a^b; \
}
以上几种方法都有优缺点。第一种比较简单,大部分人都能想到,但是占用了较多的数据空间。第二种利用了加减法的特性,缺点是加法时容易造成溢出。第三种利用了异或的性质,不会像第二种会发生溢出。