Ano ang C Operator Precedence at Associativity

Ano Ang C Operator Precedence At Associativity



Ang mga operator ay karaniwang ginagamit upang magsagawa ng iba't ibang aritmetika at lohikal na operasyon sa C. Ang C programming language ay sumusunod sa isang tiyak na pagkakasunud-sunod na kilala bilang nangunguna sa operator at pakikisama upang matukoy ang pagkakasunud-sunod ng mga operasyon sa panahon ng pagpapatupad. Ang mga tuntunin ng nangunguna sa operator at pakikisama tulong sa pagsulat ng code na walang error at pataasin ang pagiging madaling mabasa ng code.

Ang artikulong ito ay nagbibigay ng isang komprehensibong tutorial upang tulungan ka sa pag-aaral tungkol sa pagkakaugnay at pag-uuna sa operator sa C.

Pangunahing Operator sa C

Pangunahing operator inilalarawan ang pagkakasunud-sunod kung saan sinusuri ang ilang operator habang sinusuri ang mga expression. Halimbawa, kung ang isang expression ay may parehong karagdagan at multiplikasyon operator, alin ang dapat na masuri muna? Ang sagot ay simple, ang C ay sumusunod sa ilang mga patakaran upang malutas ang naturang kalabuan, karaniwang kilala bilang nangunguna sa operator . Sa C, nangunguna sa operator ay inuri sa 17 antas, mula sa unary operator hanggang sa ternary conditional operator. Karamihan sa mga ginagamit na operator tulad ng arithmetic operator, relational operator, logical operator, at bitwise operator ay sumusunod sa C standard nangunguna sa operator protocol.







Karapatan sa pangunguna idinidikta ng mga panuntunan kung aling mga operator ang may mas mataas na priyoridad kaysa sa iba kapag sinusuri ang mga expression. Ang ilang uri ng mga operator sa C programming language ay may iba't ibang antas ng karapatan sa pangunguna . Halimbawa, ang unary operator ay may higit na priyoridad kaysa binary operator. Ang sumusunod ay isang listahan ng mga operator na pinagsunod-sunod sa pataas na pagkakasunud-sunod ng karapatan sa pangunguna :



Operator Kahulugan ng Operator Pagkakaisa
()
[]
->
.
Functional na tawag

Sanggunian ng elemento ng array



Hindi direktang pagpili ng miyembro





Direktang pagpili ng miyembro

Kaliwa pakanan
!
~
+

++

at
*
sukat ng
(uri)
Lohikal na negasyon

Bitwise (1's) complement

Unary plus

Unary minus

Pagtaas

Pagbawas

Dereference (Address)

Sanggunian ng pointer

Ibinabalik ang laki ng isang bagay

Typecast (conversion)

Kanan pakaliwa
*
/
%
Paramihin

hatiin

Natitira

Kaliwa pakanan
+
Binary plus(Addition)

Binary minus(pagbabawas)

Kaliwa pakanan
<<
>>
Kaliwa shift

Tamang shift

Kaliwa pakanan
<
<=
>
>=
Mas mababa sa

Mas mababa sa o katumbas

Mahigit sa

Higit sa o katumbas

Kaliwa pakanan
==
!=
Katumbas ng

Hindi kapareho ng

Kaliwa pakanan
at Bitwise AT Kaliwa pakanan
^ Bitwise eksklusibo O Kaliwa pakanan
| Bitwise O Kaliwa pakanan
&& Lohikal AT Kaliwa pakanan
|| Lohikal O Kaliwa pakanan
?: Kondisyon Operator Kanan pakaliwa
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Simpleng assignment

Magtalaga ng produkto

Magtalaga ng quotient

Magtalaga ng natitira

Magtalaga ng kabuuan

Magtalaga ng pagkakaiba

Magtalaga ng bitwise AT

Magtalaga ng bitwise XOR

Magtalaga ng bitwise O

Magtalaga ng kaliwang shift

Magtalaga ng tamang shift

Kanan pakaliwa
, Separator ng mga expression Kaliwa pakanan

Ginagabayan ng mga panuntunang ito ang compiler kung paano suriin ang mga expression na may maraming operator sa parehong expression. Ang multiplication operator, halimbawa, ay mas nauuna kaysa sa karagdagan operator sa equation na A + B * C, alinsunod sa karapatan sa pangunguna mga tuntunin. Samakatuwid, susuriin muna ng compiler ang expression na B * C bago idagdag ang A sa resulta.

Tingnan natin ang isang halimbawa ng nangunguna sa operator sa pamamagitan ng code.

#include

int pangunahing ( ) {

int a = 43 , b = labing-isa , c = 16 , d = 31 ;

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

bumalik 0 ;

}

Ang apat na variable na a, b, c, at d, ay idineklara sa itaas na code, at ang kanilang mga inisyal na halaga ay 43, 11, 16, at 31 nang naaayon. Pagkatapos, inilalapat nito ang iba't ibang mga operator ng aritmetika at pagtatalaga sa mga variable na ito sa isang expression. Pinapataas ng expression ang value ng a sa pamamagitan ng paggamit ng pre-increment operator na ++a, pinaparami ang resulta sa post-decrement operator b–, at pagkatapos ay idinaragdag ang resulta sa dividing c ng pre-decremented value ng d. (gamit ang pre-decrement operator –d). Ang variable na resulta ay ginamit upang hawakan ang kabuuang kinalabasan ng expression na ito.

Output

Pagkakaisa sa C

Pagkakaisa ay tumutukoy sa pagkakasunud-sunod kung saan ang mga operator ay sinusuri sa panahon ng isang expression na may parehong precedence. Kaliwa sa kanan at kanan sa kaliwa pakikisama ay ang dalawang anyo ng associativity sa C. Kung ang dalawang operator ay may pareho karapatan sa pangunguna , ang mga ito ay tinasa mula kaliwa hanggang kanan ayon sa konsepto ng kaliwa-pakanan pakikisama . Gayunpaman, kung ang parehong precedence ay sinusunod, ang mga operator ay sinusuri mula kanan hanggang kaliwa ayon sa kanan-papuntang-kaliwa. pakikisama .

Halimbawa, ang ++ increment operator ay may right-to-left pakikisama , na nangangahulugang ang pagtaas operator ay sinusuri pagkatapos ng variable. Samantalang ang lohikal na AT operator ay may kaliwa-papuntang-kanan pakikisama , na nangangahulugang sinusuri ang operator mula kaliwa hanggang kanan.

#include

int main() {

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

int resulta = a * b / c;

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

bumalik 0 ;

}

Ang tatlong variable na a, b, at c ay idineklara sa code na ito, at ang mga ito ay sinisimulan sa 6, 3, at 2 ayon sa pagkakabanggit. Pagkatapos, inilalapat nito ang pagpaparami at paghahati sa mga variable na ito sa isang expression. Ang pagpaparami at paghahati ay niraranggo mula kaliwa hanggang kanan sa C batay sa kanilang pakikisama dahil pareho sila ng antas ng precedence. Ito ay nagpapahiwatig na ang operasyon ng paghahati ay nauuna, na sinusundan ng pagpaparami ng pagpaparami kapag sinusuri ang expression, a * b / c.

Output

Konklusyon

Pangunahing operator at pakikisama ay mga mahahalagang konsepto sa C programming na tumutulong na matukoy ang pagkakasunud-sunod ng pagpapatupad ng mga expression. Mga operator na may pinakamataas karapatan sa pangunguna antas ay sinusuri muna at pakikisama nakakatulong ang mga panuntunan na matukoy ang pagkakasunud-sunod kapag ginamit ang maraming operator na may parehong precedence. Pag-unawa nangunguna sa operator at pakikisama ay mahalaga kapag nagdidisenyo ng mga kumplikadong programa, at nakakatulong ito sa paggawa ng mas malinis at mas mahusay na code na may mas kaunting mga error.