HOWTO · C++
Der oder-Operator in C++
Dieser Artikel behandelt den ODER-Operator in C++.
Auf dieser Seite
In C++ verwenden Sie das logische OR (||), um Bedingungen zu kombinieren, und das bitweise OR (|), um entsprechende Bits in ganzzahligen Operanden zu kombinieren. Die Symbole sehen ähnlich aus, beantworten aber unterschiedliche Fragen und liefern unterschiedliche Arten von Ergebnissen.
Der logische OR-Operator in C++
Für Operanden, die vom eingebauten logischen Operator verarbeitet werden, wird OR als || geschrieben und ist in einer if-Bedingung nützlich, wenn eine von zwei Bedingungen ausreichen soll. Der eingebaute Operator wandelt jeden Operanden kontextbezogen in bool um. Bei arithmetischen Operanden wird null zu false und Nicht-null-Werte werden zu true; ein Nullzeiger wird zu false, während ein Nicht-Nullzeiger zu true wird. Der vollständige eingebaute Ausdruck hat den Typ bool und ist true, wenn mindestens ein Operand zu true umgewandelt wird. Ein Klassentyp kann operator|| überladen; dieser Funktionsaufruf kann sich anders verhalten und bietet kein eingebautes Kurzschlussverhalten.
| A | B | A || B |
|:-:|:-:|:——–:|
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | true |
Mit bool-Operanden und dem eingebauten || kann eine Anwendung beispielsweise Zugriff gewähren, wenn ein Benutzer Administrator ist oder ein Ticket hat. Dieses vollständige Programm meldet, ob der Zugriff erlaubt ist, und gibt eine Meldung aus, wenn die Ticketprüfung läuft:
#include <iostream>
bool check_ticket() {
std::cout << "Ticket checked\n";
return true;
}
int main() {
bool is_admin = true;
bool allowed = is_admin || check_ticket();
std::cout << std::boolalpha << "Access: " << allowed << '\n';
}
Access: true
Das logische OR wertet Operanden von links nach rechts aus und stoppt, sobald einer true ist. Hier ist is_admin true, sodass check_ticket() übersprungen wird; wäre is_admin false, würde die Funktion laufen und ihr Ergebnis würde allowed bestimmen. Dieses Kurzschlussverhalten ist nützlich, wenn der rechte Operand Arbeit ausführt, die nur benötigt wird, nachdem die linke Bedingung zu false umgewandelt wurde. Das Ergebnis bleibt ein bool; es kann als true oder false angezeigt werden oder zu 1 oder 0 umgewandelt werden, wenn es als Ganzzahl gespeichert wird.
Der bitweise OR-Operator in C++
Das bitweise OR, geschrieben als |, vergleicht entsprechende Bits in seinen ganzzahligen Operanden. Ein Ergebnisbit ist 1, wenn eines der Eingabebits 1 ist. Zum Beispiel ist 2 im Binärsystem 010 und 4 ist 100, also ist 2 | 4 gleich 110, was im Dezimalsystem 6 ist. Anders als || erzeugt das bitweise | ein ganzzahliges Ergebnis auf Grundlage der Bits statt eines einzelnen Wahrheitswerts.
Verwenden Sie || für eine Bedingung wie „Administrator oder Ticketinhaber“. Verwenden Sie |, wenn die Aufgabe darin besteht, ganzzahlige Bitmuster zu kombinieren. Bei arithmetischen Werten ungleich null wird a || b zu true ausgewertet (nach der Ganzzahlkonvertierung oft als 1 angezeigt), während a | b das Ergebnis pro Bit beibehält. Obwohl | mit ganzzahligen Werten in einem Ausdruck verwendet werden kann, der eine Bedingung testet, wertet es beide Operanden aus; || ist der logische Operator, der kurzschließt. Wählen Sie den Operator für die beabsichtigte Operation, nicht nur, weil beide Operanden als true oder false interpretiert werden können.
Fazit
Wählen Sie das logische OR (||), um Bedingungen zu kombinieren; es gibt ein bool zurück und kann die Auswertung des rechten Operanden überspringen. Wählen Sie das bitweise OR (|), um entsprechende ganzzahlige Bits zu kombinieren. Wenn Sie sich die beiden Aufgaben merken, ist es einfacher, den richtigen C++-Operator auszuwählen und sein Ergebnis zu interpretieren.