异或版swap注意
通常快速交换两个变量的值可以使用:
void swap(int& a,int& b) { a^=b^=a^=b; }
但是这样用有个前提,是:
a!=b
原因很显然,与自身异或会将变量清零。
这种用法在汇编语言中最常见
xor ax;将累加器清零
自己之前一直没注意,今天调试一个排序程序的时候发现的。
所以,异或快速交换两个数的值时最好做个判断。
void swap(int& a,int& b) { if(a!=b) { a^=b^=a^=b; } }
Codefor