Java Reference
In-Depth Information
1.
vornFrei() && !maulLeer()
: false
2.
!(vornFrei() && kornDa())
: true
3.
vornFrei() || !vornFrei() && !maulLeer()
: true
4.
vornFrei() && !kornDa() && maulLeer()
: false
5.
!!!vornFrei() || (((maulLeer())))
: true
9.2.5 Eigenschaften
Für die korrekte Verwendung boolescher Ausdrücke ist es notwendig, die Priorität, Assoziativität
und Auswertungsreihenfolge der booleschen Operatoren zu kennen.
9.2.5.1 Priorität
Von den drei booleschen Operatoren hat der Negationsoperator
!
die höchste, der Konjunktionsope-
rator
&&
die zweithöchste und der Disjunktionsoperator
||
die niedrigste Priorität. Durch Klammer-
setzung (runde Klammern) kann die Priorität beeinflusst werden, d.h. in runde Klammern einge-
schlossene boolesche Ausdrücke werden immer zuerst berechnet.
Im booleschen Ausdruck
!maulLeer() || vornFrei() && kornDa()
wird daher zunächst der
Wert des Testbefehls
maulLeer()
ermittelt. Dieser wird negiert. Anschließend wird der Wert des
Testbefehls
vornFrei()
ermittelt. Dieser Wert wird mit demWert des Testbefehls
kornDa()
konju-
giert. Zum Schluss wird der zuerst ermittelte Wert mit diesem Wert disjungiert. Der boolesche Aus-
druck ist also äquivalent mit dem Ausdruck
(!maulLeer()) || (vornFrei() && kornDa())
.
Im booleschen Ausdruck
!(kornDa() && maulLeer())
wird aufgrund der Klammersetzung zu-
nächst die Konjunktion der Werte der booleschen Ausdrücke
kornDa()
und
maulLeer()
ermittelt
und dieser Wert dann negiert.
9.2.5.2 Assoziativität
Alle drei booleschen Operatoren sind linksassoziativ. Der Ausdruck
kornDa() || vornFrei()
|| maulLeer()
ist daher äquivalent zu
(kornDa() || vornFrei()) || maulLeer()
, d.h. es
wird zunächst der Wert von
kornDa()
ermittelt und disjunktiv mit dem Wert von
vornFrei()
verknüpft. Dieser Wert wird anschließend mit dem Wert von
maulLeer()
disjungiert.
9.2.6 Auswertungsreihenfolge
Der Hamster ist ein sehr faules Lebewesen, d.h. er erspart sich unnötige Tests. Stellen Sie sich vor,
der Hamster soll den Wert des booleschen Ausdrucks
vornFrei() || kornDa()
ermitteln. Bisher
sind wir davon ausgegangen, dass er zunächst den Wert des Testbefehls
vornFrei()
und anschlie-
ßend den Wert des Testbefehls
kornDa()
ermittelt und diese beiden Werte disjungiert. Stellen Sie
sich nun vor, der Testbefehl
vornFrei()
liefert den Wert
true
. Gemäß der Wahrheitstabelle liefert
dann aber die Disjunktion unabhängig von dem Wert des Testbefehls
kornDa()
den Wert
true
.

Search WWH ::

Custom Search