Bitweise OR |
Der Bitweise-OR-Operator verknüpft alle Bits zweier Integer-Werte nach den Regeln des logischen OR: 0 OR 0 ergibt 0 und alle anderen Kombinationen ergeben 1.
|
|
Siehe auch Logisch-OR-Operator ||, Zuweisung |=, Bitweise-NOT-Operator ~, Bitweise-AND-Operator &, Bitweise-XOR-Operator ^
Details
Der Bitweise-OR-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue, der stets ein Integer-Typ ist.
Der Bitweise-OR-Operator ist nur für Integer-Werte zulässig. Unter C++ ist zusätzlich auch die Anwendung des Operators auf boolsche Werte erlaubt, welche jedoch vor Anwendung des Operators in einen int umgewandelt werden.
Der Unterschied zwischen der bitweisen und der logischen Variante des OR-Operators ist für Einsteiger in die Sprache manchmal schwer verständlich. Der Unterschied ist: Die bitweise Variante verknüpft mehrere Bits von Werten, die logische Variante verknüpft 1-Bit-Werte. Selbst bei erfahrenen Programmierern kommt es vor, dass man aufgrund der ähnlichen Schreibweise (| oder ||) aus Versehen und ohne es zu merken den falschen Operatoren verwendet. 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.
Der Bitweise-OR-Operator wird häufig für Masken verwendet.
Überladen des Operators
Der Bitweise-OR-Operator hat grundsätzlich die semantische Bedeutung einer komponentenweisen boolschen OR-Verknüpfung. Allerdings ist auch jegliche andere Semantik vom Programmierer definierbar. Trotzdem sei angemerkt, dass der Bitweise-OR-Operator eher selten überladen wird.
Die Prototypen für das Überladen des Bitweise-OR-Operators sind die folgenden (Einschränkungen und Erläuterungen siehe Überladen von Operatoren):
|
|
Im folgenden Beispiel wird eine Klasse für einen Bitstring mit 10 Zeichen präsentiert. Der überladene Bitweise-OR-Operator berechnet den entsprechenden Bitstring für eine OR-Verknüpfung.
|
|