Logisch OR-Operator ||
Der Logisch-OR-Operator verknüpft zwei boolsche Werte nach den Regeln des logischen OR: false OR false
ergibt false
und alle anderen Kombinationen ergeben true
.
Details
Der Logisch-OR-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue, in C ein Integer-Typ, in C++ ein boolscher Typ.
Der Operator ist zulässig für boolsche Werte, Integer-Werte, Fliesskommawerte sowie Pointer. Zwar ist dieser Operator bereits in C verfügbar, jedoch sind der Typ bool
sowie die Wahrheitswerte true
und false
erst ab C++ verfügbar. In C wird für den Wert false
der Integer-Wert 0
, für true
ein Integer-Wert ungleich 0
(normalerweise 1
) verwendet.
Der Rückgabewert des Operators kann nur entweder true
oder false
(oder die entsprechenden Integer-Werte in C) sein. Im Gegensatz dazu gibt der Bitweise-OR-Operator stets einen Integer-Wert zurück.
Der Unterschied zwischen der logischen und der bitweisen Variante des OR-Operators ist für Einsteiger in die Sprache manchmal schwer verständlich. Der Unterschied ist: Die logische Variante verknüpft 1-Bit Werte, die bitweise Variante verknüpft mehrere Bits von Werten. Selbst nach mehreren Jahren Erfahrung kommt es vor, dass aufgrund der ähnlichen Schreibweise (||
oder |
) aus Versehen und ohne es zu merken der falsche Operator verwendet wird. Da zudem in gewissen Fällen die beiden Operatoren dieselben Ergebnisse liefern, ist dies eine schwer aufzufindende Fehlerquelle, die manchmal einige Stunden Fehlersuche benötigt.