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:

OperatorenBeschreibungBeispiel
+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

#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c; c = a + b; cout << "Zeile 1 - Wert von c ist" << c << endl ; c = a - b; cout << "Zeile 2 - Wert von c ist" << c << endl ; c = a * b; cout << "Zeile 3 - Wert von c ist" << c << endl ; c = a / b; cout << "Zeile 4 - Wert von c ist" << c << endl ; c = a % b; cout << "Zeile 5 - Wert von c ist" << c << endl ; int d = 10; // Inkrement und Dekrement testen c = d++; cout << "Zeile 6 - Wert von c ist" << c << endl ; d = 10; // Neu zuweisen c = d--; cout << "Zeile 7 - Wert von c ist" << c << endl ; return 0; }

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:

OperatorenBeschreibungBeispiel
==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

#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c ; if( a == b ) { cout << "Zeile 1 - a ist gleich b" << endl ; } else { cout << "Zeile 1 - a ist nicht gleich b" << endl ; } if ( a < b ) { cout << "Zeile 2 - a ist kleiner als b" << endl ; } else { cout << "Zeile 2 - a ist nicht kleiner als b" << endl ; } if ( a > b ) { cout << "Zeile 3 - a ist größer als b" << endl ; } else { cout << "Zeile 3 - a ist nicht größer als b" << endl ; } /*Ändern Sie die Werte von a und b*/ a = 5; b = 20; if ( a <= b ) { cout << "Zeile 4 - a ist kleiner oder gleich b" << endl ; } if ( b >= a ) { cout << "Zeile 5 - b ist größer oder gleich a" << endl ; } return 0; }

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:

OperatorenBeschreibungBeispiel
&&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

#include <iostream> using namespace std; int main() { int a = 5; int b = 20; int c ; if ( a && b ) { cout << "Zeile 1 - Bedingung ist wahr"<< endl ; } if ( a || b ) { cout << "Zeile 2 - Bedingung ist wahr"<< endl ; } /*Ändern Sie die Werte von a und b*/ a = 0; b = 10; if ( a && b ) { cout << "Zeile 3 - Bedingung ist wahr"<< endl ; } else { cout << "Zeile 4 - Bedingung ist nicht wahr"<< endl ; } if ( !(a && b) ) { cout << "Zeile 5 - Bedingung ist wahr"<< endl ; } return 0; }

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:

pqp & qp | qp ^ q
00000
01011
11110
10011

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:

OperatorenBeschreibungBeispiel
&

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

#include <iostream> using namespace std; int main() { unsigned int a = 60; // 60 = 0011 1100 unsigned int b = 13; // 13 = 0000 1101 int c = 0; c = a & b; // 12 = 0000 1100 cout << "Zeile 1 - Wert von c ist" << c << endl ; c = a | b; // 61 = 0011 1101 cout << "Zeile 2 - Wert von c ist" << c << endl ; c = a ^ b; // 49 = 0011 0001 cout << "Zeile 3 - Wert von c ist" << c << endl ; c = ~a; // -61 = 1100 0011 cout << "Zeile 4 - Wert von c ist" << c << endl ; c = a << 2; // 240 = 1111 0000 cout << "Zeile 5 - Wert von c ist" << c << endl ; c = a >> 2; // 15 = 0000 1111 cout << "Zeile 6 - Wert von c ist" << c << endl ; return 0; }

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:

OperatorenBeschreibungBeispiel
=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

#include <iostream> using namespace std; int main() { int a = 21; int c ; c = a; cout << "Zeile 1 - =-Operator-Beispiel, Wert von c = :" <<c<< endl ; c += a; cout << "Zeile 2 - +=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c -= a; cout << "Zeile 3 - -=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c *= a; cout << "Zeile 4 - *=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c /= a; cout << "Zeile 5 - /=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c = 200; c %= a; cout << "Zeile 6 - %=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c <<= 2; cout << "Zeile 7 - <<=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c >>= 2; cout << "Zeile 8 - >>=-Operator-Beispiel, Wert von c = :" <<c<< endl ; c &= 2; cout << "Zeile 9 – Beispiel für den &= Operator, Wert von c = :" <<c<< endl ; c ^= 2; cout << "Zeile 10 – Beispiel für den ^= Operator, Wert von c = :" <<c<< endl ; c |= 2; cout << "Zeile 11 – Beispiel für den |= Operator, Wert von c = :" <<c<< endl ; return 0; }

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.

OperatorenBeschreibung
sizeofsizeof-OperatorGibt die Größe einer Variablen zurück. Zum Beispiel gibt sizeof(a) 4 zurück, wobei a eine Ganzzahl ist.
Bedingung ? X : YBedingter 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.
CastCast-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 OperatorenAssoziativitä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

#include <iostream> using namespace std; int main() { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 cout << "Der Wert von (a + b) * c / d ist" << e << endl ; e = ((a + b) * c) / d; // (30 * 15 ) / 5 cout << "Der Wert von ((a + b) * c) / d ist" << e << endl ; e = (a + b) * (c / d); // (30) * (15/5) cout << "Der Wert von (a + b) * (c / d) ist" << e << endl ; e = a + (b * c) / d; // 20 + (150/5) cout << "Der Wert von a + (b * c) / d ist" << e << endl ; return 0; }

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 的值是 50
Weitere Erweiterungen