【发布时间】:2013-05-08 06:40:59
【问题描述】:
我在一个网站上读到,使用异或交换速度很快,因为它不使用临时变量。这是一个例子:
#include <stdio.h>
int main(void)
{
int a=234,b=789;
b=b^a;
a=b^a;
b=b^a;
printf("a=%d,b=%d",a,b);
return 0;
}
为什么人们不在现实生活中的代码中使用这种技术?只是风格差吗?有什么没有明确定义的吗?这是我的编译器可能会自动从更清晰的代码中产生的优化吗?
【问题讨论】:
-
我怀疑是否有很多证据表明它通常更快(如果有的话)。
-
@xaxxon 你想提醒我注意页面的哪个部分?
-
闲聊、开放式问题会降低我们网站的实用性,并将其他问题推到首页。
-
我提出的所有问题都有直截了当的答案,而且大部分都是封闭式问题,只需要“是”或“否”的答案。这个问题是建设性的,因为它很可能会鼓励未来的访问者使用比异或交换更便携的方法。我认为您不会基于这些理由来解决这个问题。即使你这样做,我也会很快重新打开它;)
-
我认为,一旦您说“人们为什么不...”,您就偏离了 stackoverflow 的话题。此外,询问您在堆栈溢出的核心任务之外的风格趋势。这种类型的问题属于某处的博客,我很确定这不是一个真正的问题。你已经知道答案了,你正在半拖着寻找你认为在stackoverflow上回答的常见问题的答案,但stackoverflow特别不相信它们属于这里。我真的认为您应该创建一个编程博客并在那里发布此类内容。
标签: c swap xor premature-optimization