性能布尔相等?

时间:2013-05-31 09:49:27

标签: performance boolean

如果不使用

,我想知道是否会有很大的性能损失
if (MyBoolean) 

我用

if (MyBoolean == true)

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

感谢您阅读

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

优化后,两个代码的性能可能相同。但是,它们并不等同(至少在C语言系列中)。在这些语言中,true只是众多非零整数中的一种。但是,如果"布尔"碰巧是任何其他非零整数,即使" boolean"是真的。这是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");
    }
}