Mi az a C operátori elsőbbség és asszociativitás?

Mi Az A C Operatori Elsobbseg Es Asszociativitas



Az operátorokat általában különféle aritmetikai és logikai műveletek végrehajtására használják C nyelven. A C programozási nyelv egy meghatározott sorrendet követ, ún. operátori elsőbbség és asszociativitás a műveletek sorrendjének meghatározása a végrehajtás során. A szabályokat operátori elsőbbség és asszociativitás segít a hibamentes kódírásban és javítja a kód olvashatóságát.

Ez a cikk egy átfogó oktatóanyagot tartalmaz, amely segít az asszociativitás és az operátorok elsőbbségének megismerésében a C nyelvben.

Operátori elsőbbség a C-ben

Üzemeltetői elsőbbség azt a sorozatot írja le, amelyben több operátor kiértékelése történik a kifejezések kiértékelése közben. Például, ha egy kifejezésnek összeadási és szorzási operátorai is vannak, melyiket kell először kiértékelni? A válasz egyszerű, a C bizonyos szabályokat követ az ilyen kétértelműségek feloldására, amelyeket általában ún operátori elsőbbség . C-ben, operátori elsőbbség 17 szintre van besorolva, az unáris operátoroktól a hármas feltételes operátorig. A leggyakrabban használt operátorok, például aritmetikai operátorok, relációs operátorok, logikai operátorok és bitenkénti operátorok a C szabványt követik operátori elsőbbség jegyzőkönyv.







Elsőbbség A szabályok azt határozzák meg, hogy a kifejezések kiértékelésekor mely operátoroknak van magasabb prioritása, mint másoknak. A C programozási nyelvben számos operátortípus eltérő mértékű elsőbbség . Például az unáris operátorok nagyobb prioritást élveznek, mint a bináris operátorok. Az alábbiakban az operátorok listája látható növekvő sorrendben elsőbbség :



Operátor Kezelő jelentése Az asszociativitás
()
[]
->
.
Funkcionális hívás

Tömbelem hivatkozás



Közvetett tagválasztás





Közvetlen tagválasztás

Balról jobbra
!
~
+

++

&
*
mérete
(típus)
Logikai tagadás

Bitenkénti (1-es) komplementer

Egyedülálló plusz

Egyedi mínusz

Növekedés

Csökkenés

Hivatkozás (cím)

Mutató hivatkozás

Egy objektum méretét adja vissza

Typecast (konverzió)

Jobbról balra
*
/
%
Szorozni

Feloszt

Maradék

Balról jobbra
+
Bináris plusz (kiegészítés)

Bináris mínusz (kivonás)

Balról jobbra
<<
>>
Bal Shift

Jobb váltás

Balról jobbra
<
<=
>
>=
Kevesebb, mint

Kisebb vagy egyenlő

Nagyobb, mint

Nagyobb vagy egyenlő

Balról jobbra
==
!=
Egyenlő

Nem egyenlő

Balról jobbra
& Bitenként ÉS Balról jobbra
^ Bitenkénti exkluzív VAGY Balról jobbra
| Bitenkénti VAGY Balról jobbra
&& Logikus ÉS Balról jobbra
|| Logikus VAGY Balról jobbra
?: Feltételes kezelő Jobbról balra
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Egyszerű feladat

Termék hozzárendelése

Hányados hozzárendelése

A maradék hozzárendelése

Összeg hozzárendelése

Különbség hozzárendelése

Bitenkénti ÉS hozzárendelése

Bitenkénti XOR hozzárendelése

Hozzárendelés bitenként VAGY

Balra eltolás hozzárendelése

Jobb műszak hozzárendelése

Jobbról balra
, Kifejezések elválasztója Balról jobbra

Ezek a szabályok útmutatást adnak a fordítónak, hogyan értékelje ki a több operátort tartalmazó kifejezéseket ugyanabban a kifejezésben. A szorzó operátor például nagyobb prioritást élvez, mint az összeadás operátor az A + B * C egyenletben, a elsőbbség szabályokat. Ezért a fordító először kiértékeli a B * C kifejezést, mielőtt A-t adna az eredményhez.

Nézzünk egy példát arra operátori elsőbbség kódon keresztül.

#include

int fő- ( ) {

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

int eredmény = ++ 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 ( 'eredmény = %d \n ' , eredmény ) ;

Visszatérés 0 ;

}

A négy a, b, c és d változót a fenti kód deklarálja, kezdeti értékeik ennek megfelelően 43, 11, 16 és 31. Ezután számos aritmetikai és hozzárendelési operátort alkalmaz ezekre a változókra egy kifejezésben. A kifejezés növeli a értékét a ++a növelés előtti operátor használatával, az eredményt megszorozza a csökkentés utáni b– operátorral, majd hozzáadja az eredményt a c osztásához d előre csökkentett értékével. (a csökkentés előtti operátor –d használatával). Ezután az eredmény változót használjuk a kifejezés teljes eredményének megtartására.

Kimenet

Az asszociativitás C-ben

Az asszociativitás arra a sorrendre utal, amelyben az operátorok kiértékelése történik egy azonos prioritású kifejezés során. Balról jobbra és jobbról balra asszociativitás az asszociativitás két formája C-ben. Ha két operátornak ugyanaz elsőbbség , balról jobbra értékelik a balról jobbra haladó fogalma szerint asszociativitás . Mindazonáltal, ha ugyanaz a precedencia figyelhető meg, az operátorok jobbról balra kerülnek kiértékelésre a jobbról balra asszociativitás .

Például a ++ növekmény operátor jobbról balra halad asszociativitás , ami a növekedést jelenti operátor változó után kerül kiértékelésre. Míg a logikai ÉS operátor balról jobbra irányú asszociativitás , ami azt jelenti, hogy az operátor balról jobbra kerül kiértékelésre.

#include

int main() {

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

int eredmény = a * b / c;

printf( 'eredmény = %d \n ' , eredmény);

Visszatérés 0 ;

}

A három a, b és c változót ebben a kódban deklarálják, és rendre 6-ra, 3-ra és 2-re inicializálják. Ezután szorzási és osztási műveleteket alkalmaz ezekre a változókra egy kifejezésben. A szorzást és az osztást a C-ben balról jobbra rangsorolják azok alapján asszociativitás mivel azonos elsőbbségi szinttel rendelkeznek. Ez azt jelzi, hogy az osztási művelet az első, majd a szorzási művelet az a * b / c kifejezés kiértékelésénél.

Kimenet

Következtetés

Üzemeltetői elsőbbség és asszociativitás kulcsfontosságú fogalmak a C programozásban, amelyek segítenek meghatározni a kifejezések végrehajtási sorrendjét. Operátorok a legmagasabb elsőbbség szinten értékelik először és asszociativitás A szabályok segítenek meghatározni a sorrendet, ha több, azonos prioritású operátort használnak. Megértés operátori elsőbbség és asszociativitás elengedhetetlen az összetett programok tervezésénél, és segít tisztább és hatékonyabb kód előállítását kevesebb hibával.