5

これは非常に些細な問題です。a()、b()、c()、d()の4つのブール関数があります。最初のものが戻るまで、順番に呼び出していきたいですtrue。伝統的なことをする代わりに

if(!a()) {
    if(!b()) {
        if(!c()) {
            d();
        }
    }
}

また

if(!a() && !b() && !c()) d();

短絡評価として式を書くことを考えました。

(a() || b() || c() || d());

しかし、このテストがC /C++コードでこのように行われるのを見たことがありません。私が見逃しているこのアプローチに何か問題はありますか?

ありがとう。

4

2 に答える 2

3

あなたが書いたコードは有効です。d()他のブール関数がを返す場合にのみ評価されますfalse

ただし、短絡した評価は読みにくく、保守の観点からエラーが発生しやすくなります。これは、読者がそれを簡単に理解できない可能性があるためです。

于 2013-03-21T21:30:42.180 に答える
2

それらは同等ですが、特に関数名が長いかパラメーターを受け入れる場合、短絡評価ソリューションは読みにくくなる可能性があります。

于 2013-03-21T21:29:46.097 に答える