这是位操作符异或, 二进制的数学运算。这是一种不需要临时变量就可以交换ab的方法
你去看一下位操作
" ^ " 是异或。把两个二进制数(不是二进制的转化为二进制数)按位进行异或。
异或:两个操作数不相同为1,相同为0;
在码‘ = ’前加操作符,是以本身为操作数之一,将结果再赋给自己。例:
a += b;
意思是 a = a + b;
位运算符,按位异或!
例如:#include
{
int a=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d\n",x);
}
相异 结果是1,相同 结果是0!
用到异或的运算法则:
a^a=0;
0^a=a;
a^b=b^a;
a^b^c=a^(b^c)=(a^b)^c;
如题:
*a=*a^*b;
*b=*b^(*a^*b)=*b^*b^*a=0^*a=*a;将*a的值赋给了*b;
*a=(*a^*b)^*a=*a^*a^*b=0^*b=*b;将*b的值赋给*a;