Präzedenzen & Assoziationen

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