知识点:异或运算交换两变量
a^=b^=a^=b;
看到代码时有点懵。
慢慢分析……
因为赋值运算从右到左。
a^=b;
等同于 a=a^b;
b^=a;
等同于 b=b^a;
即b=b^(a^b);
即b=b^a^b=b^b^a=0^a=a
(一个数和自己异或永远为0,而0和任何数异或,都等于这个数)
以上完成了:把a的值给了b
a^=b;
等同于 a=a^b;
即a=a^(b^a)=a^b^a=a^a^b=0^b=b
以上的b^a来源于第二行代码。因此实现了a、b互换的功能。