wie Sie beachten, die Worte für suchen Sie nicht „Kurzschluss“. Kurzschlussauswertung bedeutet, dass im Gegensatz Rückkehr im Ausdruck
Wenn Ausdruck e1
zu etwas ausgewertet wird, das die Wahrheit darstellt, ist es nicht notwendig, e2
auszuwerten. Sowohl C als auch Perl verwenden eine Kurzschlussauswertung.
Ich bin mir bewusst, die Unterscheidung Du in zwei verschiedenen Varianten von Kurzschluss machen OR, aber in zwanzig Jahren in Programmiersprachen arbeitet Ich habe noch nie diese Dinge genannt gesehen. Die Perl-Version ist in dynamischen Sprachen sehr beliebt, z. B. Icon, Lua, Scheme.
Die Perl-Version ist fast ausdrückbar in C:
e1 ? e1 : e2
Leider kann diese Version e1
zweimal bewerten, je nach dem Optimierungs — und wenn e1
Nebenwirkungen hat, oder wenn der Compiler kann nicht sagen, Wenn es könnte Nebenwirkungen haben, dann ist der Compiler erforderlich, um es zweimal ausgewertet. Dieser Fehler kann behoben werden, indem der Wert e1
an eine neue lokale Variable gebunden wird, aber dafür eine GNU-Erweiterung benötigt wird.
Das C Verhalten kann in Perl durch
!!(e1 || e2)
Ein gebräuchlicher Begriff für zwei Operationen, die unterschiedliche Auswirkungen haben? Ist das nicht die Frage, ob es einen gebräuchlichen Begriff für Äpfel und Orangen gibt? Scheint ein bisschen widersprüchlich. – jalf
@Jalf: Er fragt nach einem gemeinsamen Begriff für diese beiden Arten von ** Bewertung ** _, sollte nicht die Antwort "Kurzschluss Bewertung" sein? –
Ich bin mir nicht sicher. Ist die Kurzschlussbewertung das Merkmal, an dem er interessiert ist? Es könnte genauso gut "logisch oder" oder "Int-zu-Bool-Konvertierung" sein. Die beiden Codezeilen haben viel gemeinsam, aber es gibt auch einige wichtige Unterschiede. Ich bin nicht wirklich sicher, was das OP eine allgemeine Bezeichnung * für * – jalf