标题: 有关 用异或(^)来交换两个变量的值 到底要不要用 [打印本页] 作者: Flipped17 时间: 2016-6-8 10:47 标题: 有关 用异或(^)来交换两个变量的值 到底要不要用 如题 , 如果你和我一样是初学者在看, 基础版视频老师教异或来交换变量的值时候一定很惊艳,因为,老师教的和另外两种方法:加减法和设置中间变量法相比,代码看起来要简单得多,而且看起来逼格更高。其方法如下:
int a = 3, b = 4;
a = a ^ b;
b = a ^ b;
b = a ^ b;
自此之后,我在敲代码时候如果需要用到交换变量的值,我都用这个方法。但我发现一个问题,就是视频里老师自己从来不用这个方法,他都用设置中间变量 temp。这让我很奇怪。我就去百度了下,找到了这样一个博客,原文地址如下http://blog.csdn.net/baozi1159/article/details/6923460里面说这样写并不好理由如下:
1. 这个所谓的“技巧”在现代的机器上只会更慢(我甚至怀疑它从来就不可能比原始办法快)。原始办法是两次内存读和写,这个"技巧"是六读三写加三次异或(或许编译器可以优化成两读三写加三次异或)。