2016-05-22 17 views
-5

Kurzschlussauswertung kann die Kompilierzeit verkürzen, also habe ich gelernt, dass C, C++ auf diese Weise verwendet. Aber gibt es Situationen, in denen die Kurzschlussauswertung den Code ruiniert?Gibt es irgendein plausibles Szenario, in dem ein Programmierer eine Kurzschlußauswertung eines booleschen Ausdrucks vermeiden möchte?

+1

Kurzschlussauswertung ist eine Sprachfunktion. Also Code zu schreiben, der davon abhing, dass er nicht funktionierte, würde keine Absicht richtig ausdrücken. –

+5

Eine Verkürzung der Kompilierzeit ist unwahrscheinlich, es sei denn, eine der Bedingungen ist statisch konstant. Vielleicht die Laufzeit verkürzen? –

+2

'Kurzschluss Auswertung kann die Kompilierzeit' Nein, nicht signifikant verkürzen. Deshalb wird es nicht verwendet. –

Antwort

1

Kurzschlüsse verkürzen die Kompilierzeit des Codes nicht. (um jeden sinnvollen Betrag, mindestens)

Es könnte die Laufzeit verkürzen, aber es ist nicht der beabsichtigte Zweck.

Der Zweck des Kurzschlusses ist es, die minimale Menge an Arbeit zu tun, um eine bestimmte Bedingung zu überprüfen.

Zum Beispiel:

Wenn && mit (im Gegensatz zu einem einzigen & Gegensatz), wird der rechte Operand nicht ausgewertet werden, wenn die linke falsch ist. Dies liegt an der Art einer Operation logical and: Wenn mindestens einer der Operanden false ist, ist der gesamte Ausdruck falsch.

Technisch verkürzt es die Laufzeit, wenn die Bedingung früh fehlschlägt, aber die Menge der gespeicherten Laufzeit hängt von den Ausdrücken innerhalb jedes Operanden ab.

Wie auch immer, es ist falsch, && zu verwenden, weil es "schneller" ist als &. Sie sollten beides verwenden, wenn es angemessen ist.

& wird für bitweise Operationen verwendet.