In deze zelfstudie leert u aan de hand van voorbeelden over de prioriteit en associativiteit van operators.
Voorrang van operators
De prioriteit van operatoren bepaalt welke operator als eerste wordt uitgevoerd als een expressie meer dan één operator bevat.
Laten we een voorbeeld bekijken:
int x = 5 - 17* 6;
In C is de prioriteit van *
hoger dan -
en =
. Daarom 17 * 6
wordt eerst geëvalueerd. Vervolgens wordt de uitdrukking die erbij betrokken -
is, geëvalueerd omdat de prioriteit van -
hoger is dan die van =
.
Hier is een tabel met voorrang van operators van hoger naar lager. De eigenschap van associativiteit komt binnenkort aan de orde.
Tabel voor prioriteit en associativiteit van operators
Operator | Betekenis van operator | Associativiteit |
---|---|---|
() () -> . | Functionele oproep Referentie array-element Indirecte ledenselectie Directe ledenselectie | Van links naar rechts |
! ~ + - ++ - & * sizeof (type) | Logische negatie Bitwise (1 's) aan te vullen Unary plus Unary minus Toename Decrement Verwijzing van (adres) Pointer verwijzing retourneren de grootte van een object Typecast (conversie) | Rechts naar links |
* / % | Vermenigvuldig Divide Restant | Van links naar rechts |
+ - | Binair plus (optellen) Binair min (aftrekken) | Van links naar rechts |
<< >> | Links verschuiven Rechts verschuiven | Van links naar rechts |
< <= > > = | Kleiner dan Kleiner dan of gelijk aan Groter dan Groter dan of gelijk | Van links naar rechts |
== ! = | Gelijk aan niet gelijk aan | Van links naar rechts |
& | Bitwise EN | Van links naar rechts |
^ | Bitwise exclusief OF | Van links naar rechts |
| | Bitsgewijs OF | Van links naar rechts |
&& | Logisch EN | Van links naar rechts |
|| | Logische OF | Van links naar rechts |
?: | Voorwaardelijke operator | Rechts naar links |
= * = / = % = + = - = & = = | = << = >> = | Eenvoudige toewijzing Product toewijzen Quotiënt toewijzen Rest toewijzen Som toewijzen Verschil toewijzen Bitgewijs toewijzen EN Bitgewijs toewijzen XOR Bitgewijs toewijzen OF Linker shift toewijzen Rechter shift toewijzen | Rechts naar links |
, | Scheidingsteken van uitdrukkingen | Van links naar rechts |
Associativiteit van operators
De associativiteit van operatoren bepaalt de richting waarin een uitdrukking wordt geëvalueerd. Bijvoorbeeld,
b = a;
Hier wordt de waarde van a toegewezen aan b, en niet andersom. Het is omdat de associativiteit van de =
operator van rechts naar links is.
Als er twee operators met dezelfde prioriteit (prioriteit) aanwezig zijn, bepaalt associativiteit de richting waarin ze worden uitgevoerd.
Laten we een voorbeeld bekijken:
1 == 2! = 3
Hier hebben operators ==
en !=
dezelfde prioriteit. En hun associativiteit is van links naar rechts. Daarom 1 == 2
wordt het eerst uitgevoerd.
De bovenstaande uitdrukking is gelijk aan:
(1 == 2)! = 3
Opmerking: als een instructie meerdere operatoren heeft, kunt u haakjes ()
gebruiken om de code beter leesbaar te maken.