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.
#includeint 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.
#includeint 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.