首先麻烦了解这篇csdn文章:
使用异或运算实现两数交换_无关风月-CSDN博客_异或实现两数交换
异或^:相同为0;不同为1;
对于b=a^b^a;//我始终没有比较好的理解。
后来通过b/a*a,我想会不会a把a给约掉了这样去理解,然后尝试去证明了一下。
当相同的时候,结果是0;
那a^b^a交换位置a^a^b,a^a得到0。
先来看看,当值2为0异或过程中看表
值1 异或 值2 结果 1 ^ 0 1 0 ^ 0 0
发现当值2为0的时候结构会保存值1的值。
也就是说a^b^a的时候,a实际和“约掉了一样”。
现在在来看看值是2为1的时候。
值1 异或 值2 结果 1 ^ 1 0 0 ^ 1 1
其他 :看看代码实现
#include<stdio.h>
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d",a,b);
return 0;
}
运行结果: