I den här handledningen lär du dig om operatörernas företräde och associativitet med hjälp av exempel.
Operatörernas företräde
Operatörernas företräde avgör vilken operatör som körs först om det finns mer än en operatör i ett uttryck.
Låt oss överväga ett exempel:
int x = 5 - 17* 6;
I C är företräde *
högre än -
och =
. Därför 17 * 6
utvärderas först. Därefter -
utvärderas uttrycket involverande eftersom företräde för -
är högre än för =
.
Här är en tabell över operatörernas företräde från högre till lägre. Egendom associativitet kommer att diskuteras inom kort.
Operatörens företräde och associativitetstabell
Operatör | Betydelse av operatör | Associativitet |
---|---|---|
() () -> . | Funktionellt samtal Arrayelementreferens Indirekt medlemsval Direkt medlemsval | Vänster till höger |
! ~ + - ++ - & * sizeof (typ) | Logisk negation Bitvis (1) komplement Unary plus Unary minus Increment Decrement Dereference (Address) Pekare referens Returnerar storleken på ett objekt Typecast (konvertering) | Höger till vänster |
* / % | Multiplicera Dividera Resten | Vänster till höger |
+ - | Binärt plus (tillägg) Binärt minus (subtraktion) | Vänster till höger |
<< >> | Vänster skift Höger skift | Vänster till höger |
< <= > > = | Mindre än mindre än eller lika större än större än eller lika | Vänster till höger |
== ! = | Lika med Ej lika med | Vänster till höger |
& | Bitvis OCH | Vänster till höger |
^ | Bitvis exklusivt ELLER | Vänster till höger |
| | Bitvis ELLER | Vänster till höger |
&& | Logisk OCH | Vänster till höger |
|| | Logiskt ELLER | Vänster till höger |
?: | Villkorlig operatör | Höger till vänster |
= * = / = % = + = - = & = = | = << = >> = | Enkel tilldelning Tilldela produkt Tilldela kvot Tilldela återstående Tilldela summa Tilldela skillnad Tilldela bitvis OCH Tilldela bitvis XOR Tilldela bitvis ELLER Tilldela vänster skift Tilldela höger skift | Höger till vänster |
, | Avgränsare av uttryck | Vänster till höger |
Associativitet av operatörer
Associativiteten hos operatörer bestämmer i vilken riktning ett uttryck utvärderas. Till exempel,
b = a;
Här tilldelas värdet på a till b och inte tvärtom. Det beror på att =
operatörens associativitet är från höger till vänster.
Dessutom, om två operatörer med samma prioritet (prioritet) är närvarande, bestämmer associativitet i vilken riktning de kör.
Låt oss överväga ett exempel:
1 == 2! = 3
Här operatörer ==
och !=
har samma prioritet. Och deras associativitet är från vänster till höger. Därför 1 == 2
körs först.
Uttrycket ovan motsvarar:
(1 == 2)! = 3
Obs! Om ett uttalande har flera operatorer kan du använda parenteser för ()
att göra koden mer läsbar.