I denne vejledning lærer du om operatørernes forrang og associativitet ved hjælp af eksempler.
Forrang for operatører
Operatørenes forrang bestemmer, hvilken operatør der udføres først, hvis der er mere end en operatør i et udtryk.
Lad os overveje et eksempel:
int x = 5 - 17* 6;
I C er forrang for *
højere end -
og =
. Derfor 17 * 6
evalueres først. Derefter -
vurderes udtrykket involverende, da forrang for -
er højere end for =
.
Her er en tabel med operatørers forrang fra højere til lavere. Associativitetens egenskab vil blive drøftet kort.
Operatørers prioritets- og associativitetstabel
Operatør | Betydning af operatør | Associativitet |
---|---|---|
() () -> . | Funktionelt opkald Arrayelementreference Indirekte medlemsvalg Direkte medlemsvalg | Venstre til højre |
! ~ + - ++ - & * størrelse af (type) | Logisk negation Bitvis (1'ers ) komplement Unary plus Unary minus Increment Decrement Dereference (Address) Pointer reference Returnerer størrelsen på et objekt Typecast (konvertering) | Højre til venstre |
* / % | Multiplicer Divider Rest | Venstre til højre |
+ - | Binært plus (Addition) Binært minus (subtraktion) | Venstre til højre |
<< >> | Venstre skift Højre skift | Venstre til højre |
< <= > > = | Mindre end mindre end eller lig større end større end eller lig | Venstre til højre |
== ! = | Lige med Ikke lig med | Venstre til højre |
& | Bitvis OG | Venstre til højre |
^ | Bitvis eksklusiv ELLER | Venstre til højre |
| | Bitvis ELLER | Venstre til højre |
&& | Logisk OG | Venstre til højre |
|| | Logisk ELLER | Venstre til højre |
?: | Betinget operatør | Højre til venstre |
= * = / = % = + = - = & = = | = << = >> = | Enkel tildeling Tildel produkt Tildel kvotient Tildel rest Tildel sum Tildel forskel Tildel bitvis OG Tildel bitvis XOR Tildel bitvis ELLER Tildel venstre skift Tildel højre skift | Højre til venstre |
, | Separator af udtryk | Venstre til højre |
Associativitet af operatører
Associativitet af operatorer bestemmer, i hvilken retning et udtryk evalueres. For eksempel,
b = a;
Her tildeles værdien af a til b og ikke omvendt. Det er fordi =
operatørens associativitet er fra højre til venstre.
Også, hvis to operatører med samme forrang (prioritet) er til stede, bestemmer associativitet i hvilken retning de udfører.
Lad os overveje et eksempel:
1 == 2! = 3
Her har operatører ==
og !=
samme forrang. Og deres associativitet er fra venstre mod højre. Derfor 1 == 2
udføres først.
Ovenstående udtryk svarer til:
(1 == 2)! = 3
Bemærk: Hvis en erklæring har flere operatorer, kan du bruge parenteser ()
til at gøre koden mere læselig.