我想知道以下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进行额外的比较。
空间复杂性怎么样?
有什么不同的想法吗?
答案 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
的较短形式不仅是因为它可以减少冗长的代码,还因为您可以避免像这样的潜在问题。