交换两个变量的三种方法

来源:互联网 发布:网络安全工程师专业 编辑:程序博客网 时间:2024/05/01 12:25

大家比较常用的是借助第三个变量来进行交换,代码如下:

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; \

}

以上几种方法都有优缺点。第一种比较简单,大部分人都能想到,但是占用了较多的数据空间。第二种利用了加减法的特性,缺点是加法时容易造成溢出。第三种利用了异或的性质,不会像第二种会发生溢出。