交换两个变量值,老话题,下面总结的各种方法是。
为了方便,首先定义两个变量。
int a = 1;
int b = 2;
一 借助暂时变量
1 交换变量值
int tmp;
tmp = a; // tmp = 1
a = b; // a = 2
b = tmp; // b = 1
2 交换地址
int *p;
p = &a; // tmp->1
a = &b; // a->2
b = p; // b ->1
二 不借助第三个变量
1 加减法
a = a + b // a = 3
b = a - b // b = 1
a = a - b // a = 2
2 乘除法
a = a * b // 2
b = a / b // 2
a = a / b // 1
3 异或法
// a:0000 0001
// b:0000 0010
a = a ^ b // a:0000 0011
b = a ^ b // b:0000 0001
a = a ^ b // a:0000 0010
对于上面各种方法,中间变量须要额外的内存空间。
加减法和乘除法有可能出现越界,或者被除数为0的情况,并且仅仅适用于数字运算;