交换变量的三种方法:
① 借用临时变量
t = a;
a = b;
b = t;
②加减法
b = a ^ b;
a = a + b;
b = a - b;
a = a - b;
③异或运算
a^=b^=a^=b;
第三种较难理解,首先要理解异或运算,即比较一位时只有0和1或者1和0才能得到1
可以拆解来看,假设a等于6,b等于1,那么a的二进制表示为110,b的二进制表示为001
首先是将a^b的结果赋给a
a = a ^ b ;
这时得到a为111
再将得到的a和b进行异或运算,即111和001,将结果赋给b,这时b就得到了a的值
b = a ^ b;
同理,再将a和新的b进行异或运算,即111和110,将结果赋给a,这时a就得到了b的值
a = a ^ b;
将其写在一排,同时用^=运算符,就得到了第三种交换方法
从中可以看出C语言的代码简洁之美,但也有缺点,那就是不适用与浮点数,所以要谨慎使用