Mikä on C-operaattorin etusija ja assosiaatio

Mika On C Operaattorin Etusija Ja Assosiaatio



Operaattoreita käytetään yleisesti suorittamaan erilaisia ​​aritmeettisia ja loogisia operaatioita C:ssä. C-ohjelmointikieli noudattaa tiettyä järjestystä, joka tunnetaan ns. operaattorin etusijalla ja assosiatiivisuus määrittää toimintojen järjestyksen suorituksen aikana. Säännöt operaattorin etusijalla ja assosiatiivisuus auttaa kirjoittamaan virheetöntä koodia ja lisäämään koodin luettavuutta.

Tämä artikkeli tarjoaa kattavan opetusohjelman, joka auttaa sinua oppimaan assosiatiivisuudesta ja operaattorien tärkeydestä C:ssä.

Operaattorin etusija C:ssä

Operaattorin etusija kuvaa järjestystä, jossa useita operaattoreita arvioidaan lausekkeita arvioitaessa. Esimerkiksi, jos lausekkeessa on sekä yhteen- että kertolaskuoperaattorit, kumpi tulee arvioida ensin? Vastaus on yksinkertainen, C noudattaa tiettyjä sääntöjä ratkaistakseen tällaisen epäselvyyden, joka tunnetaan yleisesti nimellä operaattorin etusijalla . C:ssä operaattorin etusijalla on luokiteltu 17 tasoon, jotka vaihtelevat unaarisista operaattoreista ternääriseen ehdolliseen operaattoriin. Useimmat käytetyt operaattorit, kuten aritmeettiset operaattorit, relaatiooperaattorit, loogiset operaattorit ja bittioperaattorit noudattavat C-standardia operaattorin etusijalla protokollaa.







Ensisijaisuus säännöt määräävät, millä operaattoreilla on korkeampi prioriteetti kuin muilla lausekkeita arvioitaessa. Useilla C-ohjelmointikielen operaattoreilla on eriasteisia etusijalla . Esimerkiksi unaarisilla operaattoreilla on suurempi prioriteetti kuin binäärioperaattoreilla. Seuraavassa on luettelo operaattoreista, jotka on lajiteltu nousevaan järjestykseen etusijalla :



Operaattori Merkitys Operaattori Assosiatiivisuus
()
[]
->
.
Toimiva puhelu

Taulukon elementin viite



Epäsuora jäsenvalinta





Suora jäsenvalinta

Vasemmalta oikealle
!
~
+

++

&
*
koko
(tyyppi)
Looginen kieltäminen

Bittikohtainen (1:n) komplementti

Yksinäinen plussa

Yksinäinen miinus

Lisäys

Vähennys

Viittaus (osoite)

Osoittimen viite

Palauttaa kohteen koon

Typecast (muunnos)

Oikealta vasemmalle
*
/
%
Kerro

Jakaa

Loput

Vasemmalta oikealle
+
Binääri plus (lisäys)

Binäärinen miinus (vähennyslasku)

Vasemmalta oikealle
<<
>>
Vasen vaihtonäppäin

Oikea vaihto

Vasemmalta oikealle
<
<=
>
>=
Vähemmän kuin

Pienempi tai yhtä suuri

Suurempi kuin

Suurempi tai yhtä suuri

Vasemmalta oikealle
==
!=
Yhtä kuin

Ei yhtä suuri kuin

Vasemmalta oikealle
& Bitittain JA Vasemmalta oikealle
^ Bittikohtaisesti yksinomainen TAI Vasemmalta oikealle
| Bittikohtaisesti TAI Vasemmalta oikealle
&& Looginen JA Vasemmalta oikealle
|| Looginen TAI Vasemmalta oikealle
?: Ehdollinen operaattori Oikealta vasemmalle
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Yksinkertainen tehtävä

Määritä tuote

Määritä osamäärä

Määritä loput

Määritä summa

Määritä ero

Määritä bittikohtaisesti AND

Määritä bittikohtainen XOR

Määritä bittikohtaisesti TAI

Määritä vasen vaihto

Määritä oikea vaihto

Oikealta vasemmalle
, Ilmaisujen erotin Vasemmalta oikealle

Nämä säännöt ohjaavat kääntäjää arvioimaan lausekkeita, joissa on useita operaattoreita samassa lausekkeessa. Kertolaskuoperaattorilla on esimerkiksi suurempi etusija kuin yhteenlaskuoperaattorilla yhtälössä A + B * C. etusijalla säännöt. Siksi kääntäjä arvioi ensin lausekkeen B * C ennen kuin lisää A:n tulokseen.

Katsotaanpa esimerkkiä operaattorin etusijalla koodin kautta.

#include

int pää ( ) {

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

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

palata 0 ;

}

Neljä muuttujaa a, b, c ja d on ilmoitettu yllä olevassa koodissa, ja niiden alkuarvot ovat vastaavasti 43, 11, 16 ja 31. Sitten se käyttää erilaisia ​​aritmeettisia ja osoitusoperaattoreita näihin lausekkeen muuttujiin. Lauseke kasvattaa a:n arvoa käyttämällä pre-inkrement-operaattoria ++a, kertoo tuloksen vähennyksen jälkeisellä operaattorilla b– ja lisää sitten tuloksen c:n jakamiseen d:n esivähennetyllä arvolla. (käyttäen pre-decrement-operaattoria –d). Muuttujan tulosta käytetään sitten säilyttämään tämän lausekkeen kokonaistulos.

Lähtö

Assosiatiivisuus C:ssä

Assosiatiivisuus viittaa järjestykseen, jossa operaattorit arvioidaan lausekkeen aikana, jolla on sama etusija. Vasemmalta oikealle ja oikealta vasemmalle assosiatiivisuus ovat C:n assosiatiivisuuden kaksi muotoa. Jos kahdella operaattorilla on sama etusijalla , niitä arvioidaan vasemmalta oikealle vasemmalta oikealle -käsitteen mukaisesti assosiatiivisuus . Kuitenkin, jos sama ensisijaisuus havaitaan, operaattorit arvioidaan oikealta vasemmalle oikealta vasemmalle assosiatiivisuus .

Esimerkiksi ++-operaattorilla on oikealta vasemmalle assosiatiivisuus , mikä tarkoittaa lisäystä operaattori arvotaan muuttujan jälkeen. Kun taas looginen JA operaattori on vasemmalta oikealle assosiatiivisuus , mikä tarkoittaa, että operaattoria arvioidaan vasemmalta oikealle.

#include

int main() {

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

int tulos = a * b / c;

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

palata 0 ;

}

Kolme muuttujaa a, b ja c ilmoitetaan tässä koodissa, ja ne alustetaan arvoiksi 6, 3 ja 2. Sitten se soveltaa kerto- ja jakooperaatioita näihin lausekkeen muuttujiin. Kerto- ja jakolasku on arvosteltu C:ssä vasemmalta oikealle niiden perusteella assosiatiivisuus koska niillä on sama etusija. Tämä osoittaa, että jakooperaatio tulee ensin ja sen jälkeen kertolasku, kun arvioidaan lauseketta a * b / c.

Lähtö

Johtopäätös

Operaattorin etusija ja assosiatiivisuus ovat tärkeitä C-ohjelmoinnin käsitteitä, jotka auttavat määrittämään lausekkeiden suoritusjärjestyksen. Operaattorit, joilla on korkein etusijalla taso arvioidaan ensin ja assosiatiivisuus säännöt auttavat määrittämään järjestyksen, kun käytetään useita operaattoreita, joilla on sama prioriteetti. Ymmärtäminen operaattorin etusijalla ja assosiatiivisuus on välttämätön monimutkaisten ohjelmien suunnittelussa, ja se auttaa tuottamaan puhtaampaa ja tehokkaampaa koodia vähemmillä virheillä.