C Operatørers præcedens og tilknytning: definition og eksempler

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 * 6evalueres 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 == 2udfø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.

Interessante artikler...