Hva er C -operatørens forrang og tilknytning

Hva er C -operatørens forrang og tilknytning
Operatører brukes ofte til å utføre forskjellige aritmetiske og logiske operasjoner i C. C -programmeringsspråket følger en spesifikk ordre kjent som Operatørens forrang og Assosiativitet For å bestemme rekkefølgen på operasjonen under utførelse. Reglene for Operatørens forrang og Assosiativitet Hjelp med å skrive feilfri kode og øke kodelesbarheten.

Denne artikkelen gir en omfattende tutorial for å hjelpe deg med å lære om tilknytning og operatørpresedence i C.

Operatørpresedence i C

Operatørens forrang beskriver sekvensen som flere operatører blir evaluert mens de evaluerer uttrykk. For eksempel, hvis et uttrykk har både tilleggs- og multiplikasjonsoperatører, som man først bør evalueres? Svaret er enkelt, C følger visse regler for å løse slik tvetydighet, ofte kjent som Operatørens forrang. I c, Operatørens forrang er klassifisert i 17 nivåer, alt fra Unary -operatører til den ternære betingede operatøren. De fleste brukte operatører som aritmetiske operatører, relasjonelle operatører, logiske operatører og bitvis operatører følger C -standarden Operatørens forrang protokoll.

Presedens Regler dikterer hvilke operatører som har høyere prioritet enn andre når de evaluerer uttrykk. Flere typer operatører i programmeringsspråket C har varierende grad av presedens. For eksempel har unary -operatører større prioritet enn binære operatører. Følgende er en liste over operatører sortert i stigende rekkefølge av presedens:

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

Array Element Reference

Indirekte medlemsvalg

Direkte valg av medlemmer

Venstre til høyre
!
~
+
-
++
-
Og
*
størrelsen av
(type)
Logisk negasjon

Bitvis (1 -er) komplement

Unary Plus

Unary minus

Økning

Dekrement

Dereference (adresse)

Pekerreferanse

Returnerer størrelsen på et objekt

Typecast (konvertering)

Høyre til venstre
*
/
%
Multiplisere

Dele opp

Rest

Venstre til høyre
+
-
Binary Plus (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
Og 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

Tilordne produkt

Tilordne kvotient

Tilordne resten

Tilordne sum

Tilordne forskjell

Tilordne bitvis og

Tilordne bitvis xor

Tilordne bitvis eller

Tilordne venstre skift

Tilordne riktig skift

Høyre til venstre
, Uttrykksseparator Venstre til høyre

Disse reglene guider kompilatoren for hvordan du evaluerer uttrykk med flere operatører i samme uttrykk. Multiplikasjonsoperatøren har for eksempel større forrang enn tilleggsoperatøren i ligningen A + B * C, i samsvar med presedens regler. Derfor vil kompilatoren først evaluere uttrykket B * c før han legger til en til resultatet.

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

#inkludere
int main ()
int a = 43, b = 11, 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);
retur 0;

De fire variablene A, B, C og D er erklært i koden ovenfor, og deres opprinnelige verdier er 43, 11, 16 og 31 deretter. Deretter bruker den en rekke aritmetiske og oppdragsoperatører på disse variablene i et uttrykk. Uttrykket øker verdien av A ved å bruke før-increment-operatøren ++ a, multipliserer utfallet av den etter dekningsoperatøren B-, og legger deretter ut resultatet til den delende C med den forhåndsdekurerte verdien av D. (Bruke førutredningsoperatøren -D). Det variable resultatet brukes deretter til å holde det totale resultatet av dette uttrykket.

Produksjon

Assosiativitet i c

Assosiativitet refererer til rekkefølgen som operatørene blir evaluert under et uttrykk med samme forrang. Venstre til høyre og høyre til venstre Assosiativitet er de to formene for tilknytning i C. Hvis to operatører har det samme presedens, De blir vurdert fra venstre til høyre i henhold til begrepet venstre til høyre Assosiativitet. Likevel, hvis den samme forrang blir observert, blir operatørene evaluert fra høyre til venstre i henhold til høyre til venstre Assosiativitet.

For eksempel har ++ økningsoperatøren rett til venstre Assosiativitet, Noe som betyr økningen operatør evalueres etter variabelen. Mens det logiske og operatør har en venstre til høyre Assosiativitet, Noe som betyr at operatøren blir evaluert fra venstre mot høyre.

#inkludere
int main ()
int a = 6, b = 3, c = 2;
int resultat = a * b / c;
printf ("resultat = %d \ n", resultat);
retur 0;

De tre variablene A, B og C er erklært i denne koden, og de blir initialisert til henholdsvis 6, 3 og 2. Deretter bruker det 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 ettersom de har samme forrangsnivå. Dette indikerer at divisjonsoperasjonen kommer først, etterfulgt av multiplikasjonsoperasjonen når du evaluerer uttrykket, a * b / c.

Produksjon

Konklusjon

Operatørens forrang og Assosiativitet er avgjørende konsepter i C -programmering som hjelper til med å bestemme utførelsesrekkefølgen av uttrykk. Operatører med høyest presedens nivå evalueres først og Assosiativitet Regler er med på å bestemme ordren når flere operatører med samme forrang brukes. Forståelse Operatørens forrang og Assosiativitet er viktig når du designer komplekse programmer, og det hjelper med å produsere renere og mer effektiv kode med færre feil.