Hva er C-operatørforrang og assosiativitet

Hva Er C Operatorforrang Og Assosiativitet



Operatorer brukes ofte til å utføre ulike aritmetiske og logiske operasjoner i C. C-programmeringsspråket følger en bestemt rekkefølge kjent som operatørens forrang og assosiativitet å bestemme rekkefølgen på operasjoner under utførelse. Reglene for operatørens forrang og assosiativitet hjelp til å skrive feilfri kode og øke kodelesbarheten.

Denne artikkelen gir en omfattende veiledning for å hjelpe deg med å lære om assosiativitet og operatørprioritet i C.

Operatørprioritet i C

Operatør forrang beskriver rekkefølgen der flere operatorer evalueres mens uttrykk evalueres. For eksempel, hvis et uttrykk har både addisjons- og multiplikasjonsoperatorer, hvilken bør evalueres først? Svaret er enkelt, C følger visse regler for å løse slike tvetydigheter, ofte kjent som operatørens forrang . I C, operatørens forrang er klassifisert i 17 nivåer, alt fra unære operatører til den ternære betingede operatøren. Mest brukte operatorer som aritmetiske operatorer, relasjonsoperatorer, logiske operatorer og bitvise operatorer følger C-standarden operatørens forrang protokoll.







Presedens regler dikterer hvilke operatorer som har høyere prioritet enn andre ved evaluering av uttrykk. Flere typer operatører i programmeringsspråket C har varierende grad av presedens . For eksempel har unære operatorer større prioritet enn binære operatorer. Følgende er en liste over operatører sortert i stigende rekkefølge presedens :



Operatør Betydningen av operatør Assosiativitet
()
[]
->
.
Funksjonell samtale

Referanse til matriseelementer



Indirekte medlemsvalg





Direkte medlemsvalg

Venstre til høyre
!
~
+

++

&
*
størrelsen av
(type)
Logisk negasjon

Bitvis (1-er) komplement

Unært pluss

Unært minus

Øke

Redusere

Henvisning (adresse)

Pekerreferanse

Returnerer størrelsen på et objekt

Typecast (konvertering)

Høyre til venstre
*
/
%
Multiplisere

Dele opp

Rest

Venstre til høyre
+
Binært pluss (tillegg)

Binær minus (subtraksjon)

Venstre til høyre
<<
>>
Venstre shift

Høyre skift

Venstre til høyre
<
<=
>
>=
Mindre enn

Mindre enn eller lik

Større enn

Større enn eller lik

Venstre til høyre
==
!=
Lik

Ikke lik

Venstre til høyre
& Bitvis OG Venstre til høyre
^ Bitvis eksklusiv ELLER Venstre til høyre
| Bitvis ELLER Venstre til høyre
&& Logisk OG Venstre til høyre
|| Logisk ELLER Venstre til høyre
?: Betinget operatør Høyre til venstre
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Enkel oppgave

Tildel produkt

Tilordne kvotient

Tildel resten

Tilordne sum

Tilordne forskjell

Tilordne bitvis OG

Tilordne bitvis XOR

Tilordne bitvis ELLER

Tilordne venstreskift

Tilordne høyre skift

Høyre til venstre
, Separator av uttrykk Venstre til høyre

Disse reglene veileder kompilatoren for hvordan man evaluerer uttrykk med flere operatorer i samme uttrykk. Multiplikasjonsoperatoren, for eksempel, har større prioritet enn addisjonsoperatoren i ligningen A + B * C, i samsvar med presedens regler. Derfor vil kompilatoren først evaluere uttrykket B * C før A legges til resultatet.

La oss se på et eksempel på operatørens forrang gjennom kode.

#include

int hoved- ( ) {

int en = 43 , b = elleve , c = 16 , d = 31 ;

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

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

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

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

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

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

komme tilbake 0 ;

}

De fire variablene a, b, c og d er deklarert i koden ovenfor, og deres startverdier er 43, 11, 16 og 31 tilsvarende. Deretter bruker den en rekke aritmetiske og tilordningsoperatorer på disse variablene i et uttrykk. Uttrykket øker verdien av a ved å bruke pre-inkrement-operatoren ++a, multipliserer utfallet med post-dekrement-operatoren b–, og legger deretter utfallet til å dele c med den pre-dekrementerte verdien av d. (ved å bruke pre-dekrement-operatoren –d). Variabelresultatet brukes deretter til å holde det totale resultatet av dette uttrykket.

Produksjon

Assosiativitet i C

Assosiativitet refererer til rekkefølgen som operatorene evalueres i under et uttrykk med samme prioritet. Venstre til høyre og høyre til venstre assosiativitet er de to formene for assosiativitet i C. Hvis to operatorer har det samme presedens , de vurderes fra venstre til høyre i henhold til konseptet venstre-til-høyre assosiativitet . Likevel, hvis samme prioritet er observert, blir operatørene evaluert fra høyre til venstre i henhold til høyre til venstre assosiativitet .

For eksempel har ++ inkrementoperatoren høyre-til-venstre assosiativitet , som betyr økningen operatør evalueres etter variabelen. Mens den logiske OG operatør har en venstre-til-høyre assosiativitet , som betyr at operatøren blir evaluert fra venstre til høyre.

#include

int main() {

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

int resultat = a * b / c;

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

komme tilbake 0 ;

}

De tre variablene a, b og c er deklarert i denne koden, og de initialiseres til henholdsvis 6, 3 og 2. Deretter bruker den multiplikasjons- og divisjonsoperasjoner på disse variablene i et uttrykk. Multiplikasjon og divisjon er rangert fra venstre til høyre i C basert på deres assosiativitet da de har samme prioritetsnivå. Dette indikerer at divisjonsoperasjonen kommer først, etterfulgt av multiplikasjonsoperasjonen når du evaluerer uttrykket, a * b / c.

Produksjon

Konklusjon

Operatør forrang og assosiativitet er avgjørende konsepter i C-programmering som hjelper til med å bestemme rekkefølgen for utførelse av uttrykk. Operatører med høyest presedens nivå evalueres først og assosiativitet regler hjelper med å bestemme rekkefølgen når flere operatorer med samme prioritet brukes. Forståelse operatørens forrang og assosiativitet er avgjørende når du designer komplekse programmer, og det bidrar til å produsere renere og mer effektiv kode med færre feil.