Vad är C-operatörsföreträde och associativitet

Vad Ar C Operatorsforetrade Och Associativitet



Operatörer används vanligtvis för att utföra olika aritmetiska och logiska operationer i C. C-programmeringsspråket följer en specifik ordning som kallas operatörsföreträde och associativitet för att bestämma ordningen på operationerna under utförandet. Reglerna för operatörsföreträde och associativitet hjälpa till att skriva felfri kod och öka kodläsbarheten.

Den här artikeln ger en omfattande handledning som hjälper dig att lära dig om associativitet och operatörsföreträde i C.

Operatörsföreträde i C

Operatörsföreträde beskriver sekvensen i vilken flera operatorer utvärderas medan uttryck utvärderas. Till exempel, om ett uttryck har både additions- och multiplikationsoperatorer, vilken ska utvärderas först? Svaret är enkelt, C följer vissa regler för att lösa sådan tvetydighet, allmänt känd som operatörsföreträde . I C, operatörsföreträde klassificeras i 17 nivåer, allt från unära operatorer till ternära villkorsoperatorer. De flesta använda operatorer som aritmetiska operatorer, relationsoperatorer, logiska operatorer och bitvisa operatorer följer C-standarden operatörsföreträde protokoll.







Företräde regler dikterar vilka operatorer som har högre prioritet än andra vid utvärdering av uttryck. Flera typer av operatörer i programmeringsspråket C har olika grader av företräde . Till exempel har unära operatorer högre prioritet än binära operatorer. Följande är en lista över operatorer sorterade i stigande ordning företräde :



Operatör Betydelsen av Operatör Associativitet
()
[]
->
.
Funktionellt samtal

Referens till matriselement



Indirekt medlemsval





Direkt medlemsval

Vänster till höger
!
~
+

++

&
*
storlek av
(typ)
Logisk negation

Bitvis (1:or) komplement

Unärt plus

Unär minus

Ökning

Minskning

Referens (adress)

Pekarreferens

Returnerar storleken på ett objekt

Typecast (konvertering)

Höger till vänster
*
/
%
Multiplicera

Dela upp

Återstoden

Vänster till höger
+
Binärt plus (tillägg)

Binär minus (subtraktion)

Vänster till höger
<<
>>
Vänster Shift

Högerväxling

Vänster till höger
<
<=
>
>=
Mindre än

Mindre än eller lika

Större än

Större än eller lika med

Vänster till höger
==
!=
Lika med

Inte 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
|| Logisk ELLER Vänster till höger
?: Villkorlig operatör Höger till vänster
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Enkelt uppdrag

Tilldela produkt

Tilldela kvot

Tilldela resten

Tilldela summa

Tilldela skillnad

Tilldela bitvis OCH

Tilldela bitvis XOR

Tilldela bitvis ELLER

Tilldela vänsterväxling

Tilldela högerväxling

Höger till vänster
, Separator av uttryck Vänster till höger

Dessa regler vägleder kompilatorn om hur man utvärderar uttryck med flera operatorer i samma uttryck. Multiplikationsoperatorn, till exempel, har större företräde än additionsoperatorn i ekvationen A + B * C, i enlighet med företräde regler. Därför kommer kompilatorn först att utvärdera uttrycket B * C innan A adderas till resultatet.

Låt oss titta på ett exempel på operatörsföreträde genom kod.

#include

int huvud ( ) {

int a = 43 , b = elva , c = 16 , d = 31 ;

int resultat = ++ a * b -- + c / -- d ;

printf ( 'a = %d \n ' , a ) ;

printf ( 'b = %d \n ' , b ) ;

printf ( 'c = %d \n ' , c ) ;

printf ( 'd = %d \n ' , d ) ;

printf ( 'resultat = %d \n ' , resultat ) ;

lämna tillbaka 0 ;

}

De fyra variablerna a, b, c och d, deklareras i ovanstående kod, och deras initiala värden är 43, 11, 16 och 31 i enlighet därmed. Sedan tillämpar den en mängd olika aritmetiska och tilldelningsoperatorer på dessa variabler i ett uttryck. Uttrycket ökar värdet av a genom att använda pre-inkrementeringsoperatorn ++a, multiplicerar utfallet med post-dekrementeringsoperatorn b– och adderar sedan utfallet till att dividera c med det för-dekrementerade värdet av d. (med användning av pre-decrement-operatorn –d). Variabelresultatet används sedan för att hålla det totala resultatet av detta uttryck.

Produktion

Associativitet i C

Associativitet hänvisar till den ordning i vilken operatorerna utvärderas under ett uttryck med samma prioritet. Vänster till höger och höger till vänster associativitet är de två formerna av associativitet i C. Om två operatorer har samma företräde , bedöms de från vänster till höger enligt konceptet vänster till höger associativitet . Icke desto mindre, om samma prioritet observeras, utvärderas operatörerna från höger till vänster enligt höger till vänster associativitet .

Till exempel har inkrementoperatorn ++ höger till vänster associativitet , vilket betyder ökningen operatör utvärderas efter variabeln. Medan den logiska OCH operatör har en vänster till höger associativitet , vilket innebär att operatören utvärderas från vänster till höger.

#include

int main() {

int a = 6 , b = 3 , c = 2 ;

int resultat = a * b / c;

printf( 'resultat = %d \n ' , resultat);

lämna tillbaka 0 ;

}

De tre variablerna a, b och c deklareras i denna kod, och de initieras till 6, 3 respektive 2. Sedan tillämpar den multiplikations- och divisionsoperationer på dessa variabler i ett uttryck. Multiplikation och division rankas från vänster till höger i C baserat på deras associativitet eftersom de har samma prioritetsnivå. Detta indikerar att divisionsoperationen kommer först, följt av multiplikationsoperationen vid utvärdering av uttrycket, a * b / c.

Produktion

Slutsats

Operatörsföreträde och associativitet är avgörande begrepp i C-programmering som hjälper till att bestämma ordningen för exekvering av uttryck. Operatörer med den högsta företräde nivå utvärderas först och associativitet regler hjälper till att bestämma ordningen när flera operatorer med samma prioritet används. Förståelse operatörsföreträde och associativitet är viktigt när man designar komplexa program, och det hjälper till att producera renare och effektivare kod med färre fel.