-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;
}

私が考えていたのは、ケース2ではequalsの追加の比較が必要なため、の複雑さif (isTrue())はそれよりも低いということです。if(isTrue()==true)

スペースの複雑さはどうですか?

別の考えはありますか?

4

3 に答える 3

3

どちらも速度/空間は同じです。しかし、2番目の方法はC /C++プログラマーにとって奇妙です。

違いは、2番目の方法は読みにくいということです。

于 2013-03-16T19:20:33.413 に答える
2

それらは同等です。また、グローバル最適化を実行すると、条件が完全に削除されます。

于 2013-03-16T19:20:22.343 に答える
1

2 番目のケース ( のチェック==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 に答える