-2

我想知道如果不使用,性能是否会有很大损失

if (MyBoolean) 

我用

if (MyBoolean == true)

我一直被告知 == boolean 是一个愚蠢的指令,因为所有语言都理解 if(bool) 但我想知道这两种评估布尔表达式的方式之间是否存在真正的区别。

感谢您阅读

4

2 回答 2

1

不,编译器非常聪明。它们将生成相同的二进制代码。

于 2013-05-31T09:52:08.920 回答
0

优化后,两个代码的性能可能相同。但是,它们并不等同(至少在 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");
    }
}
于 2014-03-07T19:29:28.447 回答