zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

12 > 6 || 18 > 1
------
true

Short-Circuit OR

AusdruckErgebnisReihenfolge der Ausertung
true || true true Nur der erste Operand wird ausgewertet
false || true true beide Operanden werden ausgewertet
true || false true Nur der erste Operand wird ausgewertet
false || false false beide Operanden werden ausgewertet
true | true true beide Operanden werden ausgewertet
false | true true beide Operanden werden ausgewertet
true | false true beide Operanden werden ausgewertet
false | false false beide Operanden werden ausgewertet

Vielleicht habt Ihr bemerkt, dass zur Beantwortung der Frage nur der erste Operand ausgewertet werden musste:

12 > 6 || 18 > 1
------
true

Ergibt die Auswertung dieses ersten Operanden true so muss der Ausdruck nicht weiter ausgewertet werden. Egal was über den Operator OR mit dem Operanden true verknüpft wird: Der Gesamtausdruck ist true.

Der ||-Operator ist ebenfalls ein Short-Circuit Operator. Da der OR-Operator true ergibt, wenn einer der beiden Operatoren oder beide true sind, wird die Short-Circuit Auswertung nach dem ersten true beendet.

Genau wie für die AND-Verknüpfung existiert für OR ein Non-Short-Circuit Operator: | (ein einzelner senkrechter Strich). Wird dieser Operator verwendet, so werden beide Operanden ausgewertet, unabhängig von deren Ergebnissen. Der Short-Circuit Operator macht das Folgende:

Um X||Y auszuwerten, wird zunächst X berechnet. Ist X true, kann die weitere Auswertung abgebrochen werden: Der ganze Ausdruck ist true. Ist X false, wird Y ausgewertet und die beiden Ergebnisse entsprechend der Boole'schen Vorschrift für die OR-Operation verknüpft.

Wie auch beim Short-Circuit AND ist beim Short-Circuit OR darauf zu achten, dass eventuelle Operationen Seiteneffekte haben können.

FRAGE 8:

Was ergibt die Auswertung des folgenden Ausdrucks:

(4 < 8 ) && (12 <= 40 ) && (50 > 1)