In diesem Tutorial lernen Sie anhand von Beispielen die Priorität und Assoziativität von Operatoren kennen.
Vorrang der Betreiber
Die Priorität von Operatoren bestimmt, welcher Operator zuerst ausgeführt wird, wenn ein Ausdruck mehr als einen Operator enthält.
Betrachten wir ein Beispiel:
int x = 5 - 17* 6;
In C ist die Priorität von *
höher als -
und =
. Daher 17 * 6
wird zuerst ausgewertet. Dann wird der betreffende Ausdruck -
bewertet, da die Priorität von -
höher ist als die von =
.
Hier ist eine Tabelle mit Vorrang der Operatoren von höher nach niedriger. Die Eigenschaft der Assoziativität wird in Kürze erörtert.
Rangfolge und Assoziativitätstabelle für Operatoren
Operator | Bedeutung des Operators | Assoziativität |
---|---|---|
() () -> . | Funktionsaufruf Array-Elementreferenz Indirekte Elementauswahl Direkte Elementauswahl | Links nach rechts |
! ~ + - ++ - & * sizeof (Typ) | Logische Negation Bitweises (1) Komplement Unär plus Unär minus Inkrement Dekrement Dereferenz (Adresse) Zeigerreferenz Gibt die Größe eines Objekts zurück. Typecast (Konvertierung) | Rechts nach links |
* / % | Multiplizieren Dividieren Rest | Links nach rechts |
+ - | Binäres Plus (Addition) Binäres Minus (Subtraktion) | Links nach rechts |
<< >> | Linksverschiebung Rechtsverschiebung | Links nach rechts |
< <= > > = | Kleiner als kleiner als oder gleich größer als größer als oder gleich | Links nach rechts |
== ! = | Gleich ungleich un | Links nach rechts |
& | Bitweises UND | Links nach rechts |
^ | Bitweises exklusives ODER | Links nach rechts |
| | Bitweises ODER | Links nach rechts |
&& | Logisches UND | Links nach rechts |
|| | Logisches ODER | Links nach rechts |
?: | Bedingter Operator | Rechts nach links |
= * = / = % = + = - = & = = | = << = >> = | Einfache Zuordnung Produkt zuordnen Quotient zuweisen Rest zuweisen Summe zuordnen Differenz Differenz zuweisen Bitweise zuweisen UND Bitweise zuweisen XOR Bitweise zuweisen ODER Linksverschiebung zuweisen Rechtsverschiebung zuweisen | Rechts nach links |
, | Trennzeichen für Ausdrücke | Links nach rechts |
Assoziativität der Operatoren
Die Assoziativität von Operatoren bestimmt die Richtung, in der ein Ausdruck ausgewertet wird. Beispielsweise,
b = a;
Hier wird der Wert von a b zugewiesen und nicht umgekehrt. Dies liegt daran, dass die Assoziativität des =
Operators von rechts nach links erfolgt.
Wenn zwei Operatoren mit derselben Priorität (Priorität) vorhanden sind, bestimmt die Assoziativität die Richtung, in der sie ausgeführt werden.
Betrachten wir ein Beispiel:
1 == 2! = 3
Hier haben Operatoren ==
und !=
die gleiche Priorität. Und ihre Assoziativität ist von links nach rechts. Daher 1 == 2
wird zuerst ausgeführt.
Der obige Ausdruck entspricht:
(1 == 2)! = 3
Hinweis: Wenn eine Anweisung mehrere Operatoren hat, können Sie Klammern verwenden ()
, um den Code besser lesbar zu machen.