交换两个变量值的方法汇总

时间:2021-07-20 20:11:43

     今天写快排的时候,突然想到我们到底可以用多少种方法来实现交换两个变量的值呢。然后就搜了下,总结出了如下几种,亲测都可以运行。但我用的是交换两个数组元素的值,那么如果当两个元素相等时,前两种方法是不能正确交换,而是得到0.具体原因现在我还不是很清楚。比较推荐的还是地三种和最后一种方法。

#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;}
#define SWAP(a,b) {typeof(a) t = a; a = b; b = t;}
#define SWAP(type,a,b) {type t = a; a = b; b = t;}

void Swap(int *a, int *b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}