Kurzschlussauswertung
# Kurzschlussauswertung

Kurzschlussauswertung (auch bedingte Auswertung, englisch short-circuit evaluation) ist ein Begriff aus der Informatik und bezeichnet eine Strategie der Auswertung von booleschen Ausdrücken. Im Allgemeinen steht das Ergebnis eines booleschen Ausdrucks ohne die Verwendung von Kurzschlussauswertung erst nach der Auswertung aller Teilausdrücke fest. Kurzschlussauswertung ermöglicht das vorzeitige Abbrechen einer Auswertung eines booleschen Ausdrucks, sobald das Auswertungsergebnis durch einen Teilausdruck eindeutig bestimmt ist.

Die Konjunktion im Ausdruck

    $C=A\land B$

soll von links nach rechts ausgewertet werden. Hat $A$ den Wert „wahr“, so muss zudem $B$ ausgewertet werden, um den Wert für $C$ bestimmen zu können. Falls $A$ jedoch den Wert „falsch“ hat, steht bereits fest, dass der Gesamtausdruck $C$ nicht mehr den Wert „wahr“ annehmen kann. Die Auswertung kann also an dieser Stelle abgebrochen werden, ohne $B$ auswerten zu müssen.

Im Gegensatz zur Auswertung einer Konjunktion steht bei Disjunktion das Gesamtergebnis bereits nach dem ersten „wahren“ Teilausdruck fest.

Verschiedene Programmiersprachen verwenden die Kurzschlussauswertung als Mittel zur Optimierung. Auf die mitunter rechenintensive Auswertung komplexerer Teilausdrücke kann dadurch oft verzichtet werden. Auch bedingt auftretende Ausführungsfehler können auf diese Weise unterdrückt werden.

## Beispiel anhand eines Algorithmus in Pseudocode

Das folgende Beispiel zeigt einen Anwendungsfall für Kurzschlussauswertung.

Die Auswertung des booleschen Ausdrucks wird im Fall, dass die Variable A den Wert 0 beinhaltet, nach der Prüfung auf Ungleichheit A != 0 abgebrochen. Dadurch, dass der erste Teilausdruck zu „falsch“ ausgewertet wurde, steht das Resultat der Konjunktion AND bereits eindeutig fest. So kann verhindert werden, dass der zweite Teilausdruck ausgewertet wird, sodass keine Division durch 0 ausgeführt wird.

## Kurzschlussauswertung in Programmiersprachen

In der Programmiersprache C werden binäre boolesche Ausdrücke mit den Operatoren && und || ausschließlich nach dem Kurzschluss-Prinzip ausgewertet.

In der Programmiersprache Java stehen die Operator && und || ebenfalls für eine Kurzschlussauswertung. Zusätzlich existieren jedoch die logischen Operatoren & und |, bei denen die Auswertung beider Seiten erzwungen wird.

Auch in Modula-2 sind die logischen Operatoren AND und OR Kurzschlussoperatoren.

