在C/C编程语言中,通常需要交换两个变量的值,所以本文将谈谈交换两个变量值的方法。
00-1010是初学者最常用的方法。临时变量用作完成两个变量交换的过渡。代码如下
void swap(int a,int b){ 0
int t=a;
a=b;
b=t;
}
00-1010通过异或运算实现了两个变量的交换,因为异或运算有明显的性质:同两个数的异或运算结果为零,零与任意数的异或运算结果为任意当前数。然后A B A=A A B=0 B=B,这样我们就可以保存A B,然后分别对A和B进行异或运算得到B和A,这样两个变量就值得交换了,代码如下
void swap(int a,int b){ 0
a=a ^ b;
b=a ^ b;
a=a ^ b;
}
这样中转就不需要第三个临时变量,直接完成交换即可。
00-1010可以先将两个数相加,然后分别减去A和B,从而得到B和A,从而完成价值交换。以下代码
void swap(int a,int b){ 0
a=a b;
b=a-b;
a=a-b;
}
其实本质上方法二和方法三的思路是一样的,都是用数学算子把A和B的两个值组合起来,然后分别通过一个值得到另一个值。在这种情况下,也可以使用其他数学运算符,如乘法和除法。
一. 普通方法
通过乘除,可以进行如下交换。void swap(int a,int b){ 0
a=a * b;
b=a/b;
a=a/b;
}
但是通常不采用乘除法来交换两个变量的值,因为除数不能为零,需要特殊的值判断,使用起来非常不方便。