if语句的复杂性

时间:2013-03-16 19:17:47

标签: java c complexity-theory time-complexity space-complexity

我想知道以下if语句的复杂性

if (isTrue()) //case 1

VS

if(isTrue()==true) //case 2

isTrue定义为

boolean isTrue(){
//lots of calculation and return true false based on that.
 return output;
}

我在想,if (isTrue())的复杂度低于if(isTrue()==true),因为案例2需要对equals进行额外的比较。

空间复杂性怎么样?

有什么不同的想法吗?

3 个答案:

答案 0 :(得分:3)

它们的速度/空间都相同。但第二种方式对于C / C ++程序员来说很奇怪。

不同的是,第二种方式可读性较差。

答案 1 :(得分:2)

它们是等价的。在进行全局优化时,条件将被完全删除。

答案 2 :(得分:1)

如果您或其他人重新定义==true的值,则第二种情况(检查true)可能会出现问题。

假设我们有以下C代码:

#define true 2

bool isEqual(int a, int b)
{
    return (a == b);
}

if (isEqual(5, 5)) {
    printf("isEqual #1\n");
}

if (isEqual(5, 5) == true) {
    printf("isEqual #2\n");
}

此代码的输出将为

isEqual #1


因此,您放弃==true的较短形式不仅是因为它可以减少冗长的代码,还因为您可以避免像这样的潜在问题。