用异或进行两个数交换的一个隐蔽的陷阱

#include <iostream>

using namespace std;
#define D(x) cout<<#x<<" = "<<x<<endl;
#define exchange(a,b)     (a=a^b,b=a^b,a=a^b)
int main(int argc, char *argv[]) {
	int a=4;
	exchange(a, a);
	D(a)
}

a = 0


当两个数一样时会变为0
可以用<algorithm>的swap()函数
 

猜你喜欢

转载自blog.csdn.net/kestory/article/details/89107697