在平常的编写程序的过程中,我们一般采用创建一个中间变量的方式来交换两变量的值。但是,怎样可以在没有中间变量的情况下交换两变量的值呢?
利用异或运算可以解决这个问题!!!
实例如下:
#include<stdio.h>
int main()
{
int a=10;
int b=5;
printf("a=%d,b=%d\n",a,b);
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d\n",a,b);
return 0;
}
运行结果:
下面简单解释一下是如何实现的,方便大家理解记忆。
已知a^a=0;a^0=a。
a=a^b;
b=a^b => b=(a^b)^b => b=a;
a=a^b => a=(a^b)^a => a=b;
至此便实现了变量a,b值的交换。
值得注意的是:该方法虽然巧妙运用异或实现了两变量值的交换,但是可读性差、只能用于整型且效率低,因此在实际的编程过程中我们一般不使用这种方法