1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence är hur vi besvara frågan, vad ska verksamheten vi göra först? 2 00:00:10,540 --> 00:00:14,250 Oavsett lösa matematiska ekvationer eller linjer tolkning av datakod, 3 00:00:14,250 --> 00:00:17,230 Det finns strikta regler för företräde till vilka vi fäster 4 00:00:17,230 --> 00:00:20,270 så att alla datorer och människor kan få samma resultat. 5 00:00:20,270 --> 00:00:24,710 >> Först ut, den viktigaste regeln ihåg, speciellt i bugg testning, 6 00:00:24,710 --> 00:00:27,680 är att vi alltid arbeta från de innersta parenteserna utåt. 7 00:00:27,680 --> 00:00:31,120 Använda extra parenteser kan vara en hjälp felsökning taktik, 8 00:00:31,120 --> 00:00:34,640 men det är inte bra att strö koden med onödiga parenteser. 9 00:00:34,640 --> 00:00:38,220 Ta dig tid att lära sig grundläggande operatorprioritet regler. 10 00:00:38,220 --> 00:00:42,450 >> Den andra allmänna regeln är att när operatörerna har lika priorty, 11 00:00:42,450 --> 00:00:44,820 du lösa enkelt från vänster till höger. 12 00:00:44,820 --> 00:00:47,690 När man arbetar med enkel matematik vi börjar med parenteser, 13 00:00:47,690 --> 00:00:52,110 gör sedan multiplikation och division, och slutligen göra addition och subtraktion. 14 00:00:52,110 --> 00:00:54,400 Multiplikation och division har samma prioritet, 15 00:00:54,400 --> 00:00:56,870 eftersom de är i huvudsak utför samma operation. 16 00:00:56,870 --> 00:01:00,880 Efter alla division helt enkelt multiplicera med inversen av ett värde. 17 00:01:00,880 --> 00:01:04,300 På liknande sätt är subtraktion tillsats enkelt ett negativt värde. 18 00:01:04,300 --> 00:01:06,150 >> Låt oss göra ett exempel. 19 00:01:14,470 --> 00:01:18,300 Efter rangordning börjar vi med parenteser. Nio minus 1. 20 00:01:18,300 --> 00:01:23,410 Det kommer att ge oss 8. Sedan kan vi gå vidare till division och multiplikation. 21 00:01:23,410 --> 00:01:27,450 Vi kommer att lösa från vänster till höger. Så 10 delat med 2 är 5. 22 00:01:27,450 --> 00:01:31,290 Vi har 5 gånger 8 här, och det kommer att ge oss 40. 23 00:01:33,230 --> 00:01:35,410 Då vi går vidare till nästa rangordning. 24 00:01:35,410 --> 00:01:38,730 Så vi kvar med 3 plus 40 minus 1. 25 00:01:42,400 --> 00:01:43,700 Igen bara lösa vänster till höger, 26 00:01:43,700 --> 00:01:47,650 eftersom det finns samma prioritet mellan addition och subtraktion. 27 00:01:47,650 --> 00:01:51,510 Vi kan säga 3 plus 40 är 43, minus 1 är 42. Det är vårt svar. 28 00:01:53,920 --> 00:01:56,730 >> Det finns 2 typer av minskning och ökning aktörer, 29 00:01:56,730 --> 00:02:01,000 Prefixet form och suffixet formen. 30 00:02:01,000 --> 00:02:06,130 Suffixet form i + +, används ofta i för slingor, 31 00:02:06,130 --> 00:02:10,500 vilket innebär att det aktuella värdet används i uttrycket, och sedan ökas. 32 00:02:10,500 --> 00:02:14,240 Så värdet kommer endast att vara annorlunda nästa gång variabel används. 33 00:02:14,240 --> 00:02:17,910 Å andra sidan, betyder prefixet ökning eller minskning som det aktuella värdet 34 00:02:17,910 --> 00:02:22,760 ökas eller minskas först och sedan det används i uttrycket. 35 00:02:22,760 --> 00:02:25,310 >> Låt oss ta ett exempel med heltal x. 36 00:02:25,310 --> 00:02:27,220 Vi ska ställa in den lika med 5. 37 00:02:27,220 --> 00:02:36,500 Om vi ​​använder suffixet operatören på den och säger X + +, x på denna linje är fortfarande 5. 38 00:02:36,500 --> 00:02:39,230 Om vi ​​skulle skriva ut vi skulle få värdet 5. 39 00:02:39,230 --> 00:02:42,540 Men framöver x1 faktum lika med 6. 40 00:02:42,540 --> 00:02:48,770 Så här på denna linje x är lika med 6, och om vi skrivs ut vi skulle få värdet 6. 41 00:02:48,770 --> 00:02:57,380 Nu om vi använde prefixet operatören, + + X, X inkrementeras först och sedan värdet används. 42 00:02:57,380 --> 00:03:00,110 Så det är lika med 7 på den här raden. 43 00:03:00,110 --> 00:03:04,750 Uppräkning naturligtvis 6 till 7, och om vi skulle skriva ut vi skulle få värdet 7. 44 00:03:04,750 --> 00:03:09,160 >> Den sista nyans i precendence som vi kommer att titta på handlar pekare notation. 45 00:03:09,160 --> 00:03:15,050 Den dereference operatör, stjärna, har prioritet över grundläggande matematiska operatörer, 46 00:03:15,050 --> 00:03:18,550 men inte över suffixet incement och operatörer minskning. 47 00:03:18,550 --> 00:03:20,690 Detta leder oss till vår sista exempel. 48 00:03:20,690 --> 00:03:24,500 Låt oss ta heltalsdelen x och ställa in den lika med 7. 49 00:03:24,500 --> 00:03:30,540 Vi kommer också att göra en pekare y och ställa in den lika med adress x. 50 00:03:30,540 --> 00:03:34,920 Så att när vi dereference y vi ska få värdet 7. 51 00:03:34,920 --> 00:03:39,380 Nu i den här raden av kod, har vi en något tvetydig situation. 52 00:03:39,380 --> 00:03:44,310 Är vi dereferencing y först och sedan inkrementera värdet 7? 53 00:03:44,310 --> 00:03:48,300 Eller är vi inkrementera pekaren och sedan dereferencing det? 54 00:03:48,300 --> 00:03:52,800 I själva verket, eftersom suffixet ökningen operatören har företräde framför 55 00:03:52,800 --> 00:03:55,370 den dereference operatören, vi försöker öka pekaren y, 56 00:03:55,370 --> 00:03:59,170 vilket skulle flytta pekaren genom storleken på int byte. 57 00:03:59,170 --> 00:04:03,040 I huvudsak ger oss en adress i något helt annat punkt i minnet, 58 00:04:03,040 --> 00:04:05,010 och då vi dereferencing det. 59 00:04:05,010 --> 00:04:07,350 Så detta är mycket meningslöst linje. 60 00:04:07,350 --> 00:04:10,250 Om vi ​​ville verkligen att öka värdet på 7, 61 00:04:10,250 --> 00:04:14,260 vi skulle behöva sätta dereference operatören med y inom parentes. 62 00:04:14,260 --> 00:04:17,290 Då kunde vi öka den. 63 00:04:17,290 --> 00:04:21,089 Så medan vi inte skulle inkrementera värdet x med näst sista raden i koden, 64 00:04:21,089 --> 00:04:23,380 i den sista kodraden vi skulle Felt dereference y 65 00:04:23,380 --> 00:04:26,380 att få värdet x och öka det. 66 00:04:26,380 --> 00:04:29,540 Vi skulle lämnas med värdet x är lika med 8. 67 00:04:31,580 --> 00:04:33,580 >> Här är en snabb resumé av precendence regler som vi har talat om. 68 00:04:33,580 --> 00:04:37,210 Vi börjar med de innersta parenteserna och arbeta utåt. 69 00:04:37,210 --> 00:04:41,210 Sedan går vi vidare till suffix operatörer som jag + + eller i -. 70 00:04:41,210 --> 00:04:45,920 Då dereference och adress operatörer som Star x eller et-tecken x, 71 00:04:45,920 --> 00:04:50,260 och prefixet operatörer som + + I eller - i. 72 00:04:50,260 --> 00:04:54,920 Slutligen gör vi de enkla matematiska operationer som multiplikation, division, modulo. 73 00:04:54,920 --> 00:04:58,400 Då addition, subtraktion. 74 00:04:58,400 --> 00:05:02,170 Det är precendence. Jag är Jordan Jozwiak, och detta är CS50. 75 00:05:04,160 --> 00:05:10,480 Vi ska dereference och använda adress och - hur gör du fras som? 76 00:05:12,380 --> 00:05:13,190 Jag är klar. Okej.