#include<iostream>
using namespace std;
int main(){
int a=1;//二进制位0001
int b=2;//二进制位0010
cout<<"交换前a="<<a<<" "<<"b="<<b<<endl;
int c=a^b;//经过异或运算(相同为0 不同为1)后 得0011 等于3
a=c^a;//经过异或运算后 得0010 等于2
b=c^a;//经过异或运算后 得0001 等于1
cout<<"交换后a="<<a<<" "<<"b="<<b<<endl;
return 0;
}
运行结果
总结
一个数异或运算2次相同的数,数值不会改变,比如int temp=a^b^b,其temp的结果就是a