偶然在逛github的时候,看到下面的代码 ``` x = x ^ y ^ (y = x); ``` 这个代码执行以后,x和y的值就会兑换,对异或了解的朋友不难验证这个公式的正确性 现实工作中,我们可以使用这个吗?答案是,极其不推荐 - 首先是直观上的可读性不好,没注释,第一反应不知道在干嘛 - 其次是如果是对引用使用这种交换方式,引用的值是相同的值,那么结果是0,也就是说,对于`&x=1, &y=1` 这样的单测,是无法通过的 - 最后,一般我们的印象都是位运算的效率会比较高,但实际如果使用传统的朴素交换 > t = x; > x = y; > y = t 因为编译器优化的关系,速度并不会比这样写来的慢 所以综上所述,改代码只是一种炫技,不能适用所有的情况,请酌情考虑使用
标签:代码,交换,数值,一行,引用,使用 From: https://www.cnblogs.com/westlin/p/16993917.html