Dies ist ein sehr triviales Problem: Es gibt vier boolesche Funktionen: a(), b(), c() und d(). Ich möchte sie in der Reihenfolge anrufen, bis die erste true
zurückgibt. anstatt das zu tun das traditionelleErsetzen von verketteten ifs durch kurzgeschlossene Operationen
if(!a()) {
if(!b()) {
if(!c()) {
d();
}
}
}
oder
if(!a() && !b() && !c()) d();
Ich dachte über den Ausdruck als kurzgeschlossen Bewertung zu schreiben.
(a() || b() || c() || d());
Aber ich habe nie gesehen, dass dieser Test in einem C/C++ Code auf diese Weise durchgeführt wird. Gibt es ein Problem mit diesem Ansatz, den ich vermisse?
Danke.
Ich kann * fünf * boolesche Funktionen sehen. –
@chris das oder ändert nicht die Bedeutung: d() wird nur ausgeführt, wenn alle anderen Funktionen falsch sind. – Loghorn
Ich würde aus Sicht der Wartung dagegen abraten. Es ist vielleicht nicht sofort für die Leute offensichtlich, was der Code macht, wenn er die kurzgeschlossene Version sieht (wenn das ein Problem für dich ist). Die Tatsache, dass Sie nach dem Verhalten bei SO fragen mussten, sollte ein Hinweis darauf sein, was passieren wird, wenn andere Ihren Code lesen. – Michael