Optimization 布尔条件测试-哪一个好?

Optimization 布尔条件测试-哪一个好?,optimization,Optimization,这个问题适合于好的代码和代码优化开发 boolean a = false; 哪种情况最好 if(a == false) 或 请在系统级描述这两种情况下发生的情况 这些指令很可能与编译器决定的指令完全相同(有问题的是哪种语言)。它们完全相同。编译器以最好的方式编译代码 if (!a) 另一种是可怕的“布尔清洗”风格 内部含义是相同的(即使在C中,当a为0时,这两个条件都是正确的),因此在优化方面没有区别。我认为这取决于布尔变量的操作历史 如果您以前曾以不寻常的方式为布尔变量赋值,比如使用不同

这个问题适合于好的代码和代码优化开发

boolean a = false;
哪种情况最好

if(a == false)


请在系统级描述这两种情况下发生的情况

这些指令很可能与编译器决定的指令完全相同(有问题的是哪种语言)。

它们完全相同。编译器以最好的方式编译代码

if (!a)
另一种是可怕的“布尔清洗”风格


内部含义是相同的(即使在C中,当
a
0
时,这两个条件都是正确的),因此在优化方面没有区别。

我认为这取决于布尔变量的操作历史

如果您以前曾以不寻常的方式为布尔变量赋值,比如使用不同类型、使用数学表达式为其赋值,那么我认为第二种选择:If(!a)更安全,更可能按照您的预期运行,但如果您总是只使用布尔变量或表达式为其赋值,或者只对布尔值求值,那么这并不重要。然而,我个人认为第一个选择:if(a==false)更具可读性


关于性能,我同意所有其他答案。

这是什么编程语言?你在用什么编译器?目标平台是什么?@Thilo:我是一般性地问,而不是任何选定的平台或编程语言。这只是一个例子。
如果((a==false==true)
??;->“一般术语”与“系统级”和“优化”相结合,使得这“不是一个真正的问题”@Roddy您不应该混合使用这些样式
if((a==false)==false)==false)
。我认为在系统中有些不同level@AnkurPatel. 在“一般术语”中,功能或性能没有区别。某些特定的(而且非常不完善的)编译器或解释器可能更喜欢其中一个而不是另一个,但您必须检查asm代码/基准以查看…您能解释一下术语“布尔清洗”吗?我喜欢它(让人想起洗钱),但我想不出来。最近,当我简化了几个
if(condition){var=true;}else{var=false;}
的实例时,我想到了这个短语。不知何故,许多人并不认为布尔和条件是一回事,需要一个
if
或一个关系运算符来进行转换。是的,与洗钱相似是有意的。
if (!a)