异或运算进行整数交换的陷阱

来源:互联网 发布:江西网络问政 编辑:程序博客网 时间:2024/05/02 01:14

大家都知道,可以使用异或运算在不使用额外内存的情况下,进行两个整数的交换。

void swap(int &x, int &y){    x^=y;    y^=x;    x^=y;}

但是,当x==y时,这样交换有个致命的缺陷,交换后x=0,y=x;

因此,使用异或运算进行整数交换时,必须首先判断两个数是否相等,完整代码如下:

void swap(int &x, int &y){    if(x==y) return;    x^=y;    y^=x;    x^=y;}



0 0
原创粉丝点击