本文共 301 字,大约阅读时间需要 1 分钟。
宏定义交换两个变量,没有中间暂存变量的一种方法如下:
#define swap(a,b) {a ^=b; b ^=a; a ^=b;}
如果a和b是两个不同的变量时,这样写是没有问题的,但是我们在给数组排序时可能会交换数组中两个元素的值,swap(array[i], array[j]), 当i==j 时,就会出现两个变量相同的情况了,这时调用这个宏交换后array[i] = 0 了,可以理解为 swap(array[i], array[i]) array[i] ^= array[i];array[i] ^= array[i];array[i] ^= array[i];这样异或运算的结果就是0了。
转载地址:http://ojmii.baihongyu.com/