-2

我想知道遵循 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 进行额外比较。

空间复杂度如何?

有什么不一样的想法吗?

4

3 回答 3

3

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

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

于 2013-03-16T19:20:33.413 回答
2

它们是等价的。并且在进行全局优化时完全删除了条件。

于 2013-03-16T19:20:22.343 回答
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更可取,不仅因为它可以减少冗长的代码,而且还因为您可以避免此类潜在问题。

于 2013-03-16T20:12:29.950 回答