之间有什么区别
if(systemReady == false)return;
和
if(!systemReady)return;
在cpu中?
答案 0 :(得分:1)
对于任何中间正常编译器,这些语句将编译为等效的机器代码。即使他们没有,但差异会很小,以至于你不得不疯狂照顾。不要过早优化。此外,算法的选择几乎总是会在确定性能方面淹没实现细节几个数量级。
最后,你永远不应该与true
,false
,YES
,NO
等进行比较。这很危险,因为有真正的价值观并非如此等于true
。任何非零值都是真的。
它的风格也不好。 systemReady
(显然)已经是一个布尔值。没有必要将它与任何东西进行比较以使其成为布尔值。
问问自己,你会不会写:
if ((systemReady == false) == true) return;
或者:
if (((systemReady == false) == true) == true) return;
如果没有,那么你应该意识到为什么写if (systemReady == false) ...
也是错误的。它同样无缘无故地添加冗余比较。
因此,请使用您的第二种形式:if (!systemReady) ...
。
答案 1 :(得分:0)
为什么不用调试器检查?好的,没有理由这样做。而且,说实话,没有理由回答你的问题。但是,......
表达式!expr
将编译为如下所示:(取决于CPU)
Load expr
Complement
Branch if zero
表达式expr==false
将编译如下所示:
Load expr
(Compare with #0)
Branch if (not) zero
如果执行时间有差异,如果您将优化级别设置为高于无优化的值,编译器将自动选择更快的级别。
所以根本不关心这个。选择该选项,您认为最好阅读。