Die Auswertung eines arithmetischen Ausdrucks erfolgt nach
gewissen Präzedenzregeln, wie in der Mathematik auch. D.h. daß
einige Operationen vor anderen ausgeführt werden. Dazu werden
die Operatoren Präzedenzstufen zugeordnet, die zusätzlich
eine Assosiationsregel beinhalten, d.h. es wird angegeben ob zuerst
linke oder zuerst rechte Teilausdrücke ausgewertet werden. So
wird bei einer Addition wie 5+6+7 zuerst der Teilausdruck
5+6 ausgewert (linksassoziativ), während bei einer
mehrfachen Zuweisung wie a=b=c zuerst der Teilausdruck b=c
ausgewertet wird (rechtsassoziativ).
Je höher die Präzedenzstufe,
desto eher wird der Operator ausgewertet. Durch Klammerung können
sowohl Präzedenz- als auch Assoziativitätsregeln umgangen
werden, da Ausdrücke in Klammern immer zuerst ausgewertet
werden.
Präzedenz |
Assoziativität |
Operatoren |
Funktion |
---|---|---|---|
17 |
rechts |
:: |
globaler Bezugsrahmen (unär) |
17 |
links |
:: |
lokaler Bezugsrahmen (binär) |
16 |
links |
->, . |
Auswahloperatoren |
16 |
links |
[] |
Array-Index |
16 |
links |
() |
Funktionsaufruf |
16 |
links |
() |
Typkonstruktion |
15 |
rechts |
sizeof |
Größe (relativ zur char) |
15 |
rechts |
++, -- |
Inkrement, Dekrement |
15 |
rechts |
~ |
bitweises NOT |
15 |
rechts |
! |
logisches NOT |
15 |
rechts |
+, - |
unäres Minus- und Pluszeichen |
15 |
rechts |
*, & |
Dereferenzierung, Adreßoperator |
15 |
rechts |
() |
Typvorgabe |
15 |
rechts |
new, delete |
dynamische Speicherverwaltung |
14 |
links |
->*, .* |
Auswahloperatoren für Zeiger |
13 |
links |
*, /, % |
multiplikative Operatoren |
12 |
links |
+, - |
Addition und Subtraktion |
11 |
links |
<<, >> |
Bitverschiebung |
10 |
links |
<, <=, >=, > |
relationale Operatoren |
9 |
links |
==, != |
Gleichheit, Ungleichheit |
8 |
links |
& |
bitweises & |
7 |
links |
^ |
bitweises XOR |
6 |
links |
| |
bitweises OR |
5 |
links |
&& |
logisches AND |
4 |
links |
|| |
logisches OR |
3 |
links |
?: |
arithmetischer if-Operator |
2 |
rechts |
=, *=, /=, &=, +=, -=, <<=, >>=, &=, |=, ^= |
Zuweisungsoperatoren |
1 |
links |
, |
Komma-Operator |
1 |
? |
throw |
Auswerfen einer Ausnahme |