[Powered by Google Translate] Precendence är hur vi besvara frågan, vad ska verksamheten vi göra först? Oavsett lösa matematiska ekvationer eller linjer tolkning av datakod, Det finns strikta regler för företräde till vilka vi fäster så att alla datorer och människor kan få samma resultat. Först ut, den viktigaste regeln ihåg, speciellt i bugg testning, är att vi alltid arbeta från de innersta parenteserna utåt. Använda extra parenteser kan vara en hjälp felsökning taktik, men det är inte bra att strö koden med onödiga parenteser. Ta dig tid att lära sig grundläggande operatorprioritet regler. Den andra allmänna regeln är att när operatörerna har lika priorty, du lösa enkelt från vänster till höger. När man arbetar med enkel matematik vi börjar med parenteser, gör sedan multiplikation och division, och slutligen göra addition och subtraktion. Multiplikation och division har samma prioritet, eftersom de är i huvudsak utför samma operation. Efter alla division helt enkelt multiplicera med inversen av ett värde. På liknande sätt är subtraktion tillsats enkelt ett negativt värde. Låt oss göra ett exempel. Efter rangordning börjar vi med parenteser. Nio minus 1. Det kommer att ge oss 8. Sedan kan vi gå vidare till division och multiplikation. Vi kommer att lösa från vänster till höger. Så 10 delat med 2 är 5. Vi har 5 gånger 8 här, och det kommer att ge oss 40. Då vi går vidare till nästa rangordning. Så vi kvar med 3 plus 40 minus 1. Igen bara lösa vänster till höger, eftersom det finns samma prioritet mellan addition och subtraktion. Vi kan säga 3 plus 40 är 43, minus 1 är 42. Det är vårt svar. Det finns 2 typer av minskning och ökning aktörer, Prefixet form och suffixet formen. Suffixet form i + +, används ofta i för slingor, vilket innebär att det aktuella värdet används i uttrycket, och sedan ökas. Så värdet kommer endast att vara annorlunda nästa gång variabel används. Å andra sidan, betyder prefixet ökning eller minskning som det aktuella värdet ökas eller minskas först och sedan det används i uttrycket. Låt oss ta ett exempel med heltal x. Vi ska ställa in den lika med 5. Om vi ​​använder suffixet operatören på den och säger X + +, x på denna linje är fortfarande 5. Om vi ​​skulle skriva ut vi skulle få värdet 5. Men framöver x1 faktum lika med 6. Så här på denna linje x är lika med 6, och om vi skrivs ut vi skulle få värdet 6. Nu om vi använde prefixet operatören, + + X, X inkrementeras först och sedan värdet används. Så det är lika med 7 på den här raden. Uppräkning naturligtvis 6 till 7, och om vi skulle skriva ut vi skulle få värdet 7. Den sista nyans i precendence som vi kommer att titta på handlar pekare notation. Den dereference operatör, stjärna, har prioritet över grundläggande matematiska operatörer, men inte över suffixet incement och operatörer minskning. Detta leder oss till vår sista exempel. Låt oss ta heltalsdelen x och ställa in den lika med 7. Vi kommer också att göra en pekare y och ställa in den lika med adress x. Så att när vi dereference y vi ska få värdet 7. Nu i den här raden av kod, har vi en något tvetydig situation. Är vi dereferencing y först och sedan inkrementera värdet 7? Eller är vi inkrementera pekaren och sedan dereferencing det? I själva verket, eftersom suffixet ökningen operatören har företräde framför den dereference operatören, vi försöker öka pekaren y, vilket skulle flytta pekaren genom storleken på int byte. I huvudsak ger oss en adress i något helt annat punkt i minnet, och då vi dereferencing det. Så detta är mycket meningslöst linje. Om vi ​​ville verkligen att öka värdet på 7, vi skulle behöva sätta dereference operatören med y inom parentes. Då kunde vi öka den. Så medan vi inte skulle inkrementera värdet x med näst sista raden i koden, i den sista kodraden vi skulle Felt dereference y att få värdet x och öka det. Vi skulle lämnas med värdet x är lika med 8. Här är en snabb resumé av precendence regler som vi har talat om. Vi börjar med de innersta parenteserna och arbeta utåt. Sedan går vi vidare till suffix operatörer som jag + + eller i -. Då dereference och adress operatörer som Star x eller et-tecken x, och prefixet operatörer som + + I eller - i. Slutligen gör vi de enkla matematiska operationer som multiplikation, division, modulo. Då addition, subtraktion. Det är precendence. Jag är Jordan Jozwiak, och detta är CS50. Vi ska dereference och använda adress och - hur gör du fras som? Jag är klar. Okej.