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