c++ - (x==0) 可以比 (0==x) 更有效吗?

标签 c++

<分区>

Possible Duplicate:
Which one will execute faster, if(flag==0) or if(0==flag)?

我通常将我的平等条件写成:

if(0==x)

和很多人一样,而不是

if(x==0) 

这样编译器会在我不小心键入 = 而不是 == 时告诉我。

有人告诉我,一些编译器将其实现为两个寄存器加载,而不是使用不等于零操作的一个,因此效率较低。

有人知道这是否合理吗?

最佳答案

Someone told me that some compilers implement this as two register loads, instead of one using a not-equal-zero operation

这样做没有技术原因。所以不,任何称职的编译器都不会做出这种无关紧要的区分:因为这两个语句是严格等价的,并且由于编译器可以轻松识别这一点,所以它将以相同的方式对待它们。

请注意,这适用于具有行为良好的运算符== 的内置类型和用户定义类型。 理论上用户可以提供一个非对称的operator == 重载,其中没有给出这种等价性。

关于c++ - (x==0) 可以比 (0==x) 更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145225/

相关文章:

c++ - 无法将 ifstream 对象声明为我类(class)的成员

c++ - Eigen 能否在其线性代数 Ax=b 中使用超过 Double 的精度

c++ - 带有动态加载库的 undefined symbol "typeinfo"

c++ - 使用 boost::asio 连接到 HTTPS 服务器

c++ - 即将在 c++ 中添加的模块是否会修复/减轻对 pimpl 习语的需求?

C++ : Calling inherited static method from static method

c++ - 使用boost range_iterator数组来分割字符串

c++ - 升压变体比较器

c++ - 为什么默认使用 4.8 时 b2 使用 gcc4.6 构建?

c++ - 调用一个平凡的析构函数有什么影响?