Die Sprache C++ umfasst alle C-Operatoren und fügt mehrere neue Operatoren hinzu. Operatoren legen eine Bewertung fest, die an einem oder mehreren Operanden auszuführen ist.
Rangfolge und Assoziativität
Die Rangfolge des Operators gibt die Reihenfolge der Vorgänge in Ausdrücken an, die mehr als einen Operator enthalten. Die Operatorassoziivität gibt an, ob in einem Ausdruck, der mehrere Operatoren mit der gleichen Rangfolge enthält, ein Operand mit dem Operanden links oder rechts gruppiert wird.
Alternative Schreibweisen
C++ gibt alternative Rechtschreibungen für einige Operatoren an. In C werden die alternativen Schreibweisen als Makros im <iso646.h>-Header bereitgestellt. In C++ sind diese Alternativen Schlüsselwörter, und die Verwendung von <iso646.h> oder das C++-Äquivalent <ciso646> ist veraltet. In Microsoft C++ ist die Option oder /Za
die /permissive-
Compileroption erforderlich, um die alternativen Schreibweisen zu aktivieren.
Rangfolge und Zuordnungstabelle für C++-Operatoren
Die folgende Tabelle zeigt die Rangfolge und Assoziativität von C++-Operatoren (in absteigender Rangfolge). Operatoren mit derselben Rangfolgenzahl haben die gleiche Rangfolge, es sei denn, es wird eine andere Beziehung explizit durch Klammern erzwungen.
Operatorbeschreibung |
Operator |
Alternative |
Rangfolge der Gruppe 1, keine Zuordnung |
|
|
Bereichsauflösung |
:: |
|
Rangfolge der Gruppe 2, von links nach rechts assoziativ |
|
|
Elementauswahl (Objekt oder Zeiger) |
. oder -> |
|
Array-Tiefgestellt |
[] |
|
Funktionsaufruf |
() |
|
Postfix-Inkrement |
++ |
|
Postfix-Dekrementierung |
-- |
|
Typname |
typeid |
|
Konstantentypkonvertierung |
const_cast |
|
Dynamische Typkonvertierung |
dynamic_cast |
|
Neuinterpretierte Typkonvertierung |
reinterpret_cast |
|
Konvertierung statischer Typ |
static_cast |
|
Rangfolge der Gruppe 3, von rechts nach links assoziativ |
|
|
Größe des Objekts oder Typs |
sizeof |
|
Präfixinkrementierung |
++ |
|
Präfix-Dekrementierung |
-- |
|
Ergänzung |
~ |
compl |
Logisch nicht |
! |
not |
Unäre Negation |
- |
|
Unär plus |
+ |
|
Adresse von |
& |
|
Dereferenzierung |
* |
|
Create object (Objekt erstellen) |
new |
|
Objekt zerstören |
delete |
|
Cast |
() |
|
Gruppe 4 Rangfolge, von links nach rechts assoziativ |
|
|
Zeiger-zu-Member (Objekte oder Zeiger) |
.* oder ->* |
|
Gruppe 5 Rangfolge, von links nach rechts assoziativ |
|
|
Multiplikation |
* |
|
Division |
/ |
|
Modul |
% |
|
Rangfolge der Gruppe 6, von links nach rechts assoziativ |
|
|
Addition |
+ |
|
Subtraktion |
- |
|
Rangfolge der Gruppe 7, von links nach rechts assoziativ |
|
|
Verschiebung nach links |
<< |
|
Verschiebung nach rechts |
>> |
|
Rangfolge der Gruppe 8, von links nach rechts assoziativ |
|
|
Kleiner als |
< |
|
Größer als |
> |
|
Kleiner als oder gleich |
<= |
|
Größer als oder gleich |
>= |
|
Rangfolge der Gruppe 9, von links nach rechts assoziativ |
|
|
Gleichheit |
== |
|
Ungleichheit |
!= |
not_eq |
Gruppierung 10 Rangfolge von links nach rechts nach rechts |
|
|
Bitweises AND |
& |
bitand |
Rangfolge der Gruppe 11, von links nach rechts assoziativ |
|
|
Bitweise exklusiv ODER |
^ |
xor |
Rangfolge der Gruppe 12, von links nach rechts nach rechts |
|
|
Bitweise inklusive OR |
| |
bitor |
Rangfolge der Gruppe 13, von links nach rechts nach rechts |
|
|
Logisches AND |
&& |
and |
Gruppe 14 Rangfolge, von links nach rechts assoziivität |
|
|
Logisches OR |
|| |
or |
Rangfolge der Gruppe 15, von rechts nach links, Assoziivität |
|
|
Bedingt |
? : |
|
Abtretung |
= |
|
Multiplikationszuweisung |
*= |
|
Abteilungszuweisung |
/= |
|
Moduluszuweisung |
%= |
|
Additionszuweisung |
+= |
|
Subtraktionszuweisung |
-= |
|
Zuordnung der linken Schicht |
<<= |
|
Zuordnung mit der rechten Schicht |
>>= |
|
Bitweise UND Zuordnung |
&= |
and_eq |
Bitweise inklusive OR-Zuordnung |
|= |
or_eq |
Bitweise exklusive OR-Zuweisung |
^= |
xor_eq |
Ausdruck auslösen |
throw |
|
Rangfolge der Gruppe 16, von links nach rechts assoziativ |
|
|
Comma |
, |
|
Siehe auch
Operatorüberladung