C++ Operatoren
Ein Operator ist ein Symbol, das dem Compiler mitteilt, bestimmte mathematische oder logische Operationen auszuführen. C++ verfügt über zahlreiche integrierte Operatoren und bietet die folgenden Operatortypen:
- Arithmetische Operatoren
- Relationale Operatoren
- Logische Operatoren
- Bitweise Operatoren
- Zuweisungsoperatoren
- Sonstige Operatoren
In diesem Kapitel werden arithmetische Operatoren, relationale Operatoren, logische Operatoren, bitweise Operatoren, Zuweisungsoperatoren und andere Operatoren nacheinander vorgestellt.
Arithmetische Operatoren
Die folgende Tabelle zeigt die von C++ unterstützten arithmetischen Operatoren.
Angenommen, die Variable A hat den Wert 10 und die Variable B hat den Wert 20, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| + | Addiert die beiden Operanden. | A + B ergibt 30 |
| - | Subtrahiert den zweiten Operanden vom ersten Operanden. | A - B ergibt -10 |
| * | Multipliziert die beiden Operanden. | A * B ergibt 200 |
| / | Dividiert den Zähler durch den Nenner. | B / A ergibt 2 |
| % | Modulo-Operator, der Rest nach der ganzzahligen Division. | B % A ergibt 0 |
| ++ | Inkrementoperator, ganzzahliger Wert wird um 1 erhöht. | A++ ergibt 11 |
| -- | Dekrementoperator, ganzzahliger Wert wird um 1 verringert. | A-- ergibt 9 |
Beispiel
Sehen Sie sich die folgenden Beispiele an, um die in C++ verfügbaren arithmetischen Operatoren zu verstehen.
Kopieren Sie das folgende C++-Programm und fügen Sie es in die Datei test.cpp ein, kompilieren und führen Sie das Programm aus.
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 10 Line 7 - c 的值是 10
Relationale Operatoren
Die folgende Tabelle zeigt die von C++ unterstützten relationalen Operatoren.
Angenommen, die Variable A hat den Wert 10 und die Variable B hat den Wert 20, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| == | Prüft, ob die Werte zweier Operanden gleich sind; wenn sie gleich sind, ist die Bedingung wahr. | (A == B) ist nicht wahr. |
| != | Prüft, ob die Werte zweier Operanden gleich sind; wenn sie nicht gleich sind, ist die Bedingung wahr. | (A != B) ist wahr. |
| > | Prüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A > B) ist nicht wahr. |
| < | Prüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A < B) ist wahr. |
| >= | Prüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A >= B) ist nicht wahr. |
| <= | Prüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A <= B) ist wahr. |
Beispiel
Siehe die folgenden Beispiele, um die in C++ verfügbaren relationalen Operatoren zu verstehen.
Kopieren Sie das folgende C++-Programm und fügen Sie es in die Datei test.cpp ein, kompilieren und führen Sie das Programm aus.
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Line 1 - a 不等于 b Line 2 - a 不小于 b Line 3 - a 大于 b Line 4 - a 小于或等于 b Line 5 - b 大于或等于 a
Logische Operatoren
Die folgende Tabelle zeigt die von C++ unterstützten logischen Operatoren.
Angenommen, die Variable A hat den Wert 1 und die Variable B hat den Wert 0, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| && | Wird als logischer UND-Operator bezeichnet. Wenn beide Operanden wahr sind, dann ist die Bedingung wahr. | (A && B) ist falsch. |
| || | Wird als logischer ODER-Operator bezeichnet. Wenn einer der beiden Operanden wahr ist, dann ist die Bedingung wahr. | (A || B) ist wahr. |
| ! | Wird als logischer NICHT-Operator bezeichnet. Er wird verwendet, um den logischen Zustand eines Operanden umzukehren. Wenn die Bedingung wahr ist, macht der logische NICHT-Operator sie falsch. | !(A && B) ist wahr. |
Beispiel
Sehen Sie sich die folgenden Beispiele an, um die in C++ verfügbaren logischen Operatoren zu verstehen.
Kopieren Sie das folgende C++-Programm und fügen Sie es in die Datei test.cpp ein, kompilieren und führen Sie das Programm aus.
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Line 1 - 条件为真 Line 2 - 条件为真 Line 4 - 条件不为真 Line 5 - 条件为真
Bitweise Operatoren
Bitweise Operatoren arbeiten mit Bits und führen Operationen Bit für Bit aus. Die Wahrheitstabellen von &, | und ^ sind wie folgt:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Angenommen A = 60 und B = 13. Im Binärformat ausgedrückt sehen sie wie folgt aus:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
Die folgende Tabelle zeigt die von C++ unterstützten bitweisen Operatoren. Angenommen, Variable A hat den Wert 60 und Variable B hat den Wert 13, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| & | Bitweise AND-Operation. Führt eine "AND"-Operation an binären Bits durch. Operationsregeln: 0&0=0; 0&1=0; 1&0=0; 1&1=1; | (A & B) ergibt 12, was 0000 1100 entspricht. |
| | | Bitweiser OR-Operator. Führt eine "OR"-Operation an binären Bits durch. Operationsregeln: 0|0=0; 0|1=1; 1|0=1; 1|1=1; | (A | B) ergibt 61, was 0011 1101 entspricht. |
| ^ | XOR-Operator. Führt eine "XOR"-Operation an binären Bits durch. Operationsregeln: 0^0=0; 0^1=1; 1^0=1; 1^1=0; | (A ^ B) ergibt 49, was 0011 0001 ist. |
| ~ | Bitweiser NOT-Operator. Führt eine "Inversion"-Operation an Binärbits durch. Operationsregeln: ~1=-2; ~0=-1; | (~A) ergibt -61, was 1100 0011 ist, die Zweierkomplementform einer vorzeichenbehafteten Binärzahl. |
| << | Binärer Linksverschiebungsoperator. Verschiebt alle Binärbits eines Operanden um eine bestimmte Anzahl von Positionen nach links (die am weitesten links stehenden Binärbits werden verworfen, und rechts werden Nullen aufgefüllt). | A << 2 ergibt 240, was 1111 0000 ist. |
| >> | Binärer Rechtsverschiebungsoperator. Verschiebt alle Binärbits einer Zahl um eine bestimmte Anzahl von Positionen nach rechts. Bei positiven Zahlen werden links Nullen aufgefüllt; bei negativen Zahlen werden links Einsen aufgefüllt; die Bits auf der rechten Seite werden verworfen. | A >> 2 ergibt 15, was 0000 1111 ist. |
Beispiel
Siehe die folgenden Beispiele, um die in C++ verfügbaren bitweisen Operatoren zu verstehen.
Kopieren Sie das folgende C++-Programm und fügen Sie es in die Datei test.cpp ein, kompilieren und führen Sie das Programm aus.
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
Zuweisungsoperatoren
Die folgende Tabelle listet die von C++ unterstützten Zuweisungsoperatoren auf:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| = | Einfacher Zuweisungsoperator. Weist dem linken Operanden den Wert des rechten Operanden zu. | C = A + B weist C den Wert von A + B zu. |
| += | Additionszuweisungsoperator, addiert den rechten Operanden zum linken Operanden und weist das Ergebnis dem linken Operanden zu. | C += A ist äquivalent zu C = C + A. |
| -= | Subtraktionszuweisungsoperator, subtrahiert den rechten Operanden vom linken Operanden und weist das Ergebnis dem linken Operanden zu. | C -= A ist äquivalent zu C = C - A. |
| *= | Multiplikationszuweisungsoperator, multipliziert den rechten Operanden mit dem linken Operanden und weist das Ergebnis dem linken Operanden zu. | C *= A ist äquivalent zu C = C * A. |
| /= | Divisions-Zuweisungsoperator, dividiert den linken Operanden durch den rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C /= A ist äquivalent zu C = C / A. |
| %= | Modulo- und Zuweisungsoperator. Bildet den Modulo zweier Operanden und weist ihn dem linken Operanden zu. | C %= A ist äquivalent zu C = C % A. |
| <<= | Linksverschiebungs- und Zuweisungsoperator. | C <<= 2 ist äquivalent zu C = C << 2. |
| >>= | Rechtsverschiebungs- und Zuweisungsoperator. | C >>= 2 ist äquivalent zu C = C >> 2. |
| &= | Bitweiser AND- und Zuweisungsoperator. | C &= 2 ist äquivalent zu C = C & 2. |
| ^= | Bitweiser XOR- und Zuweisungsoperator. | C ^= 2 ist äquivalent zu C = C ^ 2 |
| |= | Bitweiser OR- und Zuweisungsoperator. | C |= 2 ist äquivalent zu C = C | 2 |
Beispiel
Sehen Sie sich die folgenden Beispiele an, um die in C++ verfügbaren Zuweisungsoperatoren zu verstehen.
Kopieren Sie das folgende C++-Programm und fügen Sie es in die Datei test.cpp ein, kompilieren und führen Sie das Programm aus.
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Line 1 - = 运算符实例,c 的值 = 21 Line 2 - += 运算符实例,c 的值 = 42 Line 3 - -= 运算符实例,c 的值 = 21 Line 4 - *= 运算符实例,c 的值 = 441 Line 5 - /= 运算符实例,c 的值 = 21 Line 6 - %= 运算符实例,c 的值 = 11 Line 7 - <<= 运算符实例,c 的值 = 44 Line 8 - >>= 运算符实例,c 的值 = 11 Line 9 - &= 运算符实例,c 的值 = 2 Line 10 - ^= 运算符实例,c 的值 = 0 Line 11 - |= 运算符实例,c 的值 = 2
Sonstige Operatoren
Die folgende Tabelle listet einige weitere wichtige Operatoren auf, die von C++ unterstützt werden.
| Operatoren | Beschreibung |
|---|---|
| sizeof | sizeof-OperatorGibt die Größe einer Variablen zurück. Zum Beispiel gibt sizeof(a) 4 zurück, wobei a eine Ganzzahl ist. |
| Bedingung ? X : Y | Bedingter OperatorWenn Bedingung wahr ist ? dann ist der Wert X : andernfalls ist der Wert Y. |
| , | Komma-OperatorEr führt eine Reihe von Operationen nacheinander aus. Der Wert des gesamten Komma-Ausdrucks ist der Wert des letzten Ausdrucks in der durch Kommas getrennten Liste. |
| . (Punkt) und -> (Pfeil) | MitgliedsoperatorWird verwendet, um auf Mitglieder von Klassen, Strukturen und Unions zu verweisen. |
| Cast | Cast-OperatorWandelt einen Datentyp in einen anderen Datentyp um. Zum Beispiel gibt int(2.2000) 2 zurück. |
| & | Zeigeroperator &Gibt die Adresse einer Variablen zurück. Zum Beispiel liefert &a; die tatsächliche Adresse der Variablen. |
| * | Zeigeroperator *Zeigt auf eine Variable. Zum Beispiel zeigt *var; auf die Variable var. |
Operatorrangfolge in C++
Die Operatorrangfolge bestimmt die Gruppierung von Termen in einem Ausdruck. Dies beeinflusst, wie ein Ausdruck ausgewertet wird. Einige Operatoren haben eine höhere Rangfolge als andere; zum Beispiel haben Multiplikations- und Divisionsoperatoren eine höhere Rangfolge als Additions- und Subtraktionsoperatoren.
Zum Beispiel x = 7 + 3 * 2. Hier wird x der Wert 13 zugewiesen, nicht 20, weil der Operator * eine höhere Rangfolge als + hat, also wird zuerst die Multiplikation 3*2 berechnet und dann 7 addiert.
Die folgende Tabelle listet die Operatoren in der Rangfolge von hoch nach niedrig auf. Operatoren mit höherer Rangfolge stehen oben in der Tabelle, und Operatoren mit niedrigerer Rangfolge stehen unten. In einem Ausdruck werden Operatoren mit höherer Rangfolge zuerst ausgewertet.
| Kategorie | Operatoren | Assoziativität |
|---|---|---|
| Postfix | () [] -> . ++ - - | Von links nach rechts |
| Unär | + - ! ~ ++ - - (type)* & sizeof | Von rechts nach links |
| Multiplikativ | * / % | Von links nach rechts |
| Additiv | + - | Von links nach rechts |
| Verschiebung | << >> | Von links nach rechts |
| Beziehung | < <= > >= | Von links nach rechts |
| Gleichheit | == != | Von links nach rechts |
| Bitweises AND | & | Von links nach rechts |
| Bitweises XOR | ^ | Von links nach rechts |
| Bitweises OR | | | Von links nach rechts |
| Logisches AND | && | Von links nach rechts |
| Logisches OR | || | Von links nach rechts |
| Bedingungen | ?: | Von rechts nach links |
| Zuweisung | = += -= *= /= %=>>= <<= &= ^= |= | Von rechts nach links |
| comma | , | Von links nach rechts |
Beispiel
Sieh dir die folgenden Beispiele an, um die Operatorrangfolge in C++ zu verstehen.
Kopieren Sie das folgende C++-Programm und fügen Sie es in die Datei test.cpp ein, kompilieren und führen Sie das Programm aus.
Vergleiche den Unterschied zwischen dem Setzen von Klammern und dem Nichtsetzen von Klammern, was unterschiedliche Ergebnisse liefert. Da (), /, *, und + unterschiedliche Prioritätsstufen haben, werden Operatoren mit höherer Priorität zuerst ausgewertet.
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50Weitere Erweiterungen