C Operatörers företräde och associativitet: definition och exempel

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 * 6utvä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 == 2kö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.

Intressanta artiklar...