在C语言的程序中难免会遇到两个数值交换的问题,我们一般是引入第三方变量进行交换。如交换ab的值:
main
{
int a,b;
int t;
t = a;
a = b;
b = t;
}
即可以完成两个数值的交换。
但是我们还可以在不引入第三变量即可以进行交换,即使用二进制的按位异或运算(0^0=0 , 1^1=0 , 0^1=1 , 1^0=1)。如下:
main
{
int a = 3,b = 4;//a=00000011;b=00000100
a = a^b; //a=00000111
b = b^a; //b=00000011 即3
a = a^b; //a=00000100 即4
}
以上运算后即a=4,b=3.