按位异或操作符^是将相对应的二进制位按相同为0,相异为1的规则取值。
0 ^ 1为1;1 ^ 1;0 ^ 0都为0。可以发现异或的取值和被异或的值规律为任意两个值得异或取值为第三个值,那么在交换两个变量值得时候可以使用异或操作符进行交换,不需要采用第三个变量就可以完成两变量交换,相对于算术方式交换也有着不怕溢出的优点。
例:
在不创建第三个变量的前提下完成两个变量的交换。
#include<stdio.h>
int main()
{
int a = 12;
int b = 15;
a = a ^ b;//将a,b异或的值赋值给a。
b = a ^ b;//a,b异或的值再与b异或赋值于b,值为a的初始值12。
a = a ^ b;//a,b异或的值在与被重新赋值12的b异或赋值给a,a的值为15;
return 0;
}