[Powered by Google Translate] Precendence ay kung paano namin sagutin ang tanong, ano ang operasyon na dapat namin gawin unang?
Kung paglutas ng equation sa matematika o pag-parse ng mga linya ng computer code,
may mga mahigpit na mga panuntunan ng mangingibabaw sa kung saan namin sumunod
upang ang lahat ng mga computer at ang mga tao ay maaaring makakuha ng parehong resulta.
>> Unang off, ang pinaka-mahalagang panuntunan tandaan, lalo na sa pagsubok ng bug,
na lagi naming mula sa kaibuturan panaklong palabas.
Paggamit ng mga extrang panaklong ay maaaring maging isang kapaki-pakinabang na taktika sa pag-debug,
pero hindi mahusay na kasanayan sa magkalat ng iyong code sa unneeded mga panaklong.
Dalhin ang oras upang malaman ang mga pangunahing panuntunan ng operator mangingibabaw.
>> Ang pangalawang pangkalahatang panuntunan na kapag operator may katumbas priorty,
malutas lamang mula kaliwa papuntang kanan.
Kapag pagharap sa simpleng matematika sisimulan namin sa mga panaklong,
pagkatapos ay gawin ang pagdami at division, at sa wakas ay gawin ang karagdagan at pagbabawas.
Multiplikasyon at dibisyon may parehong prayoridad,
dahil mahalagang ito ay gumaganap ang parehong pagpapatakbo.
Pagkatapos ng lahat ng division ay simpleng multiply ng kabaligtaran ng isang halaga.
Katulad nito, ang pagbabawas ay simpleng pagdagdag ng isang negatibong halaga.
>> Natin ang isang halimbawa.
Ng pagsunod sa pagkakasunud-sunod ng mga karapatan sa pangunguna, magsisimula kami sa mga panaklong. Siyam minus 1.
Na bigyan kami ng 8. Pagkatapos ay maaari naming ilipat sa division at pagpaparami.
Susubukan naming malutas mula kaliwa papuntang kanan. Kaya 10 na hinati sa pamamagitan ng 2 ay 5.
Mayroon kaming 5 beses 8 dito, at na ay magbibigay sa amin 40.
Pagkatapos naming ilipat sa sa susunod na order ng mangingibabaw.
Kaya kami ay naiwan na may 3 plus 40 minus 1.
Muli lamang paglutas kaliwa papuntang kanan,
dahil may kapantay na priority sa pagitan ng karagdagan at pagbabawas.
Maaari naming sabihin 3 plus 40 ay 43, minus 1 ay 42. Na ang aming mga sagot.
>> May 2 uri ng mga operator ng pagbabawas at pagdagdag;
Ang prefix form, at ang suffix na form.
Ang suffix form, i + +, ay karaniwang ginagamit para sa mga loop,
na nangangahulugan na ang kasalukuyang halaga ay ginagamit sa pagpapahayag, at pagkatapos ito ay incremented.
Kaya halaga ay lamang iba sa susunod na oras na variable ay ginagamit.
Sa kabilang banda, ang prefix pagdagdag o pagbabawas ay nangangahulugan na ang kasalukuyang halaga
ay incremented o decremented unang, at pagkatapos ito ay ginagamit sa pagpapahayag.
>> Natin ang isang halimbawa sa integer x.
Itinakda namin ito katumbas sa 5.
Kung gagamitin namin ang mga operator ng suffix dito at sabihin x + +, x sa linyang ito ay pa rin 5.
Kung kami ay upang i-print ito namin ang halaga 5.
Ngunit pasulong x1 katotohanan katumbas ng 6.
Kaya dito mismo sa line x ay katumbas sa 6, at kung-print namin ito namin makuha ang halaga 6.
Ngayon kung ginamit namin ang prefix operator, + + x, x incremented unang, at pagkatapos ay ang halaga ay ginagamit.
Kaya ito ay katumbas ng 7 sa linyang ito.
Incrementing siyempre 6 hanggang 7, at kung kami ay upang i-print ito Gusto naming makuha ang halaga 7.
>> Ang huling pananarinari sa precendence na kami ay tumingin sa mga deal na may pointer pagtatanda.
Ang dereference operator, bituin, may priority sa paglipas ng pangunahing mga operator sa matematika,
ngunit hindi sa ibabaw ng suffix incement at pagbabawas operator.
Humahantong sa amin sa aming panghuling halimbawa.
Natin gawin ang integer x at itakda ang mga ito katumbas ng 7.
Din kami gumawa ng pointer y at itakda ito katumbas sa address ng x.
Sa gayon ay kapag namin dereference y dapat naming makuha ang halaga 7.
Ngayon sa linya ng code, mayroon kaming isang medyo malabo sitwasyon.
Namin dereferencing y unang, at pagkatapos ay incrementing ang halaga 7?
O kami incrementing pointer at pagkatapos ay dereferencing ito?
Sa katunayan, dahil ang suffix ng pagdagdag ng operator ay may susunod sa
ang dereference operator, kami ay sinusubukan upang dagdagan ang pointer y,
na ilipat ang pointer ng laki ng mga int byte.
Mahalaga pagbigay sa amin ng isang address sa ilang mga ganap na magkaibang mga punto sa memorya,
at pagkatapos kami ay dereferencing ito.
Kaya ito ay napaka walang kahulugan linya.
Kung gusto namin ang aktwal na upang dagdagan ang halaga ng 7,
nais namin upang ilagay ang dereference operator may y sa mga panaklong.
Pagkatapos ay maaari naming dagdagan ang mga ito.
Kaya habang hindi namin ay incrementing ang halaga x sa ikalawang sa huling linya ng code,
sa huling linya ng code gagawin namin infact dereference y
upang makuha ang halaga ng x at dagdagan na.
Gusto namin naiwan sa ang halaga na katumbas ng x 8.
>> Narito ang isang mabilis na pagbabalik-tanaw ng mga mga panuntunan ng precendence na namin ang uusapang tungkol sa.
Sisimulan naming may sa kaibuturan panaklong at gumana ang palabas.
Pagkatapos naming lumipat sa suffix ng mga operator tulad ng i + + o i -.
Pagkatapos dereference at address ng mga operator tulad ng star x o ampersand x,
at ang prefix operator tulad ng + + i o - i.
Panghuli gawin namin ang mga simpleng mga pagpapatakbo ng matematika tulad ng multiplikasyon, dibisyon, modulo.
Pagkatapos karagdagan, pagbabawas.
Iyon ay precendence. Ako Jordan Jozwiak, at ito ay CS50.
Bibigyan namin ng dereference at gamitin ang address at - kung paano mo gawin parirala na?
Tapos ako na. Okay.