我想知道如果不使用,性能是否会有很大损失
if (MyBoolean)
我用
if (MyBoolean == true)
我一直被告知 == boolean 是一个愚蠢的指令,因为所有语言都理解 if(bool) 但我想知道这两种评估布尔表达式的方式之间是否存在真正的区别。
感谢您阅读
我想知道如果不使用,性能是否会有很大损失
if (MyBoolean)
我用
if (MyBoolean == true)
我一直被告知 == boolean 是一个愚蠢的指令,因为所有语言都理解 if(bool) 但我想知道这两种评估布尔表达式的方式之间是否存在真正的区别。
感谢您阅读
不,编译器非常聪明。它们将生成相同的二进制代码。
优化后,两个代码的性能可能相同。但是,它们并不等同(至少在 C 语言家族中)。在这些语言中,true
只是许多非零整数之一。但是,如果“布尔值”恰好是任何其他非零整数,那么即使“布尔值”为真,比较也会失败。这是 C 语言中的一个示例:
Foo* makeFoo();
int main() {
Foo* myFoo = makeFoo();
if(myFoo) {
printf("Successfully created a Foo object.\n");
}
// The following doesn't work, because true is just the number 1, and you can't place an object at that address.
if(myFoo == true) {
printf("You will never see this!\n");
}
}