Seien in einem Java-Programm
a
und b
zwei Variable vom Typ
boolean.
Es wird der Ausdruck a&&b
ausgewertet.
Es handelt sich dabei um ein Langauswertung.
Der Ausdruck kann nicht ausgewertet werden, da
a und
b vom Typ
int sein müssen.
Der
Ausdruck wird zu false ausgewertet, wenn
a
false ist, egal welchen boolschen
Wert b
hat.
In einem Java-Programm tauchen folgende Zeilen auf:
boolean a =false; boolean b =true; boolean c = !(a&&b) == !a || !b;
Der
Wert von c
ist immer false
auch wenn die Werte von a
und b
verändert werden.
c
hat den Wert
true
weil a
und b
die Werte true haben.
Ist einer der Werte von a
oder b
false,
dann ist auch c
false.
Unabhängig von den boolschen Werten von
a und
b ist der Wert von
c
immer true.
Die Variable
a
ist in einem Java-Programm als
int deklariert und irgendwann auch initialisiert worden. Später taucht folgende Zeile auf:
b = a%2 == 0;
Die Zeile ist richtig, wenn
b vom Typ
int ist, denn in ihr wird der Rest bei der Division von
a durch 2 gespeichert, der dann anschließend auf 0 geprüft wird.
Der Compiler übersetzt die Zeile nicht, da er nicht weiß, ob zu erst '=' oder '==' ausgewertet werden soll.
Die Zeile ist korrekt, wenn
b vom Typ
boolean ist.
Die Tabelle
a
b
c
0
0
0
0
1
1
1
0
1
1
1
0
Die Standardinterpretation sagt, dass die Tabelle eine XOR-Verknüpfung darstellt. Interpretiert man die 1 als F ('falsch') und die 0 als T ('wahr'), so ergibt siech eine andere logische Verknüpfung.