Logische Operatoren

Die nächste Klasse an Operatoren sind die logischen Operatoren. Dabei werden Integerzahlen als wahrer Wert interpretiert, wenn sie ungleich Null sind, als falscher Wert sonst. Das Ergebnis ist 1 falls wahr, 0 falls falsch. Auch hier ist eine Anwendung auf Fließkommazahlen möglich, aber nicht sinnvoll.
 

Operator

Int

Float

Operation

Beispiel

Ergebnis

&&

X

 

Logisches UND

i&&j

1, wenn i und j ungleich 0, 0 sonst

||

X

 

Logisches ODER

a||b

0 wenn a und b gleich 0, 1 sonst

!

X

 

Logisches NOT (Negation)

!q

1 wenn q gleich 0, 0 sonst

Da logische Werte in C++ nichts anderes sind als Integerzahlen, kann man mit ihnen auch rechnen. Dabei kann man z.B. folgenden Trick nutzen:

a = 5 + !!b * 7;

Dieser Ausdruck weist a den Wert 5 oder 12 zu, je nachdem ob b Null ist oder nicht (falls b nicht Null, ist !b Null und !0 ist 1). Man sollte sich allerdings im klaren darüber sein, daß solche Tricks der Lesbarkeit des Programms schaden.

Auch ist es wichtig, immer zwischen den bitweisen und den logischen Operatoren zu unterscheiden. Besonders die beiden UND und ODER werden sehr leicht verwechselt, was besonders schlimm sein kann, wenn es eine Zeitlang richtig funktioniert. Das kann nämlich dann passieren, wenn Wahrheitswerte wirklich nur durch 0 und 1 dargestellt werden. Dann unterscheiden sich die bitweisen und die logischen Operationen nicht. Doch sobald andere Werte genutzt werden, treten Fehler auf, die im Nachhinein sehr schwer zu finden sein können.