我通常把我的平等条件写成:
if(0==x)
Run Code Online (Sandbox Code Playgroud)
和许多人一样
if(x==0)
Run Code Online (Sandbox Code Playgroud)
这样编译器会告诉我什么时候不小心输入=而不是==.
有人告诉我,有些编译器将其实现为两个寄存器加载,而不是使用不等于零的操作,因此效率较低.
有人知道这是否是一个合理的评论?
有人告诉我,有些编译器将其实现为两个寄存器加载,而不是使用不等于零的操作
没有技术理由这样做.所以不,任何有价值的编译器都不会产生这种无关紧要的区别:因为两个语句都是严格相同的,并且由于编译器可以轻易地识别它,因此它们将对它们进行相同的处理.
请注意,这仅适用于内置类型和具有良好行为的用户定义类型operator ==.从理论上讲,用户可以提供不对称的operator ==过载,其中没有给出这种等价.
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |