1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence er hvordan vi svare på spørsmålet, hva skal operasjonen vi gjøre først? 2 00:00:10,540 --> 00:00:14,250 Enten løse matematiske ligninger eller parsing linjer med programkode, 3 00:00:14,250 --> 00:00:17,230 Det er strenge regler for forrang til som vi følger 4 00:00:17,230 --> 00:00:20,270 slik at alle datamaskiner og mennesker kan få det samme resultatet. 5 00:00:20,270 --> 00:00:24,710 >> Først av, den viktigste regelen å huske, spesielt i bug testing, 6 00:00:24,710 --> 00:00:27,680 er at vi alltid arbeide fra de innerste parentesene utover. 7 00:00:27,680 --> 00:00:31,120 Bruke ekstra parentes kan være et nyttig debugging taktikk, 8 00:00:31,120 --> 00:00:34,640 men det er ikke lurt å kull koden med unødvendige parenteser. 9 00:00:34,640 --> 00:00:38,220 Ta deg tid til å lære grunnleggende operatorpresedens regler. 10 00:00:38,220 --> 00:00:42,450 >> Den andre Hovedregelen er at når operatørene har lik priorty, 11 00:00:42,450 --> 00:00:44,820 du bare løse fra venstre til høyre. 12 00:00:44,820 --> 00:00:47,690 Når du arbeider med enkel matematikk starter vi med parenteser, 13 00:00:47,690 --> 00:00:52,110 deretter gjøre multiplikasjon og divisjon, og til slutt gjør addisjon og subtraksjon. 14 00:00:52,110 --> 00:00:54,400 Multiplikasjon og divisjon har samme prioritet, 15 00:00:54,400 --> 00:00:56,870 fordi de er i hovedsak utfører samme operasjon. 16 00:00:56,870 --> 00:01:00,880 Tross alt divisjon er rett og slett multiplisere med den inverse av en verdi. 17 00:01:00,880 --> 00:01:04,300 Tilsvarende er subtraksjon bare å legge en negativ verdi. 18 00:01:04,300 --> 00:01:06,150 >> La oss gjøre et eksempel. 19 00:01:14,470 --> 00:01:18,300 Etter rekkefølge, vil vi starte med parenteser. Ni minus en. 20 00:01:18,300 --> 00:01:23,410 Det vil gi oss 8. Da kan vi gå videre til divisjon og multiplikasjon. 21 00:01:23,410 --> 00:01:27,450 Vi vil løse fra venstre til høyre. Så 10 dividert med 2 er 5. 22 00:01:27,450 --> 00:01:31,290 Vi har 5 ganger 8 her, og som vil gi oss 40. 23 00:01:33,230 --> 00:01:35,410 Så vi går videre til neste rekkefølge. 24 00:01:35,410 --> 00:01:38,730 Så vi sitter igjen med 3 pluss 40 minus 1. 25 00:01:42,400 --> 00:01:43,700 Igjen bare løse venstre til høyre, 26 00:01:43,700 --> 00:01:47,650 fordi det er lik prioritet mellom addisjon og subtraksjon. 27 00:01:47,650 --> 00:01:51,510 Vi kan si 3 pluss 40 er 43, minus 1 er 42. Det er vårt svar. 28 00:01:53,920 --> 00:01:56,730 >> Det finnes 2 typer øke og tilvekst operatører; 29 00:01:56,730 --> 00:02:01,000 Prefikset formen, og suffikset skjemaet. 30 00:02:01,000 --> 00:02:06,130 Suffikset form, i + +, er ofte brukt i for looper, 31 00:02:06,130 --> 00:02:10,500 noe som betyr at den gjeldende verdi brukes i uttrykket, og da er det inkrementert. 32 00:02:10,500 --> 00:02:14,240 Så verdien vil bare være forskjellig neste gang variabel brukes. 33 00:02:14,240 --> 00:02:17,910 På den annen side betyr prefikset inkrementet eller decrement at gjeldende verdi 34 00:02:17,910 --> 00:02:22,760 økes eller dekrementeres først, og deretter er det brukt i uttrykket. 35 00:02:22,760 --> 00:02:25,310 >> La oss ta et eksempel med tall x. 36 00:02:25,310 --> 00:02:27,220 Vi setter den lik 5. 37 00:02:27,220 --> 00:02:36,500 Hvis vi bruker suffikset operatør på det og si x + +, x på denne linjen er fortsatt 5. 38 00:02:36,500 --> 00:02:39,230 Hvis vi skulle skrive den ut vi ville få verdien 5. 39 00:02:39,230 --> 00:02:42,540 Men fremover x1 faktum lik 6. 40 00:02:42,540 --> 00:02:48,770 Så akkurat her på denne linjen x er lik 6, og hvis vi skrevet det ut vi ville få verdien 6. 41 00:02:48,770 --> 00:02:57,380 Hvis vi nå brukte prefikset operatør, + + x, x er økes først og deretter verdien brukes. 42 00:02:57,380 --> 00:03:00,110 Så det er lik 7 på denne linjen. 43 00:03:00,110 --> 00:03:04,750 Inkrementering selvfølgelig 6-7, og hvis vi skulle skrive den ut vi ville få verdien 7. 44 00:03:04,750 --> 00:03:09,160 >> Den siste nyanse i precendence at vi vil se på avtaler med pekeren notasjon. 45 00:03:09,160 --> 00:03:15,050 Den dereferanse operatør, stjerne, har prioritet over grunnleggende matematiske operatører, 46 00:03:15,050 --> 00:03:18,550 men ikke over suffikset incement og Decrement operatører. 47 00:03:18,550 --> 00:03:20,690 Dette leder oss til vår siste eksempel. 48 00:03:20,690 --> 00:03:24,500 La oss ta heltall x og sette den lik 7. 49 00:03:24,500 --> 00:03:30,540 Vi vil også gjøre en peker y og sette den lik adressen x. 50 00:03:30,540 --> 00:03:34,920 Slik at når vi dereferanse y vi bør få verdien 7. 51 00:03:34,920 --> 00:03:39,380 Nå i denne linjen med kode, har vi en noe tvetydig situasjon. 52 00:03:39,380 --> 00:03:44,310 Er vi dereferencing y først, og deretter økes verdien 7? 53 00:03:44,310 --> 00:03:48,300 Eller er vi inkrementering pekeren og deretter dereferencing det? 54 00:03:48,300 --> 00:03:52,800 Faktisk, på grunn suffikset inkrementet operatøren har forrang fremfor 55 00:03:52,800 --> 00:03:55,370 den dereferanse operatør, vi forsøker å øke pekeren y, 56 00:03:55,370 --> 00:03:59,170 som ville flytte pekeren ved størrelsen på int bytes. 57 00:03:59,170 --> 00:04:03,040 Hovedsak gi oss en adresse i noen helt annet sted i minnet, 58 00:04:03,040 --> 00:04:05,010 og så skal vi dereferencing det. 59 00:04:05,010 --> 00:04:07,350 Så dette er veldig meningsløst linje. 60 00:04:07,350 --> 00:04:10,250 Hvis vi faktisk ønsket å øke verdien av 7, 61 00:04:10,250 --> 00:04:14,260 vi måtte sette dereferanse operatør med y i parentes. 62 00:04:14,260 --> 00:04:17,290 Da kunne vi øke den. 63 00:04:17,290 --> 00:04:21,089 Så mens vi ikke ville være inkrementering verdien x med den nest siste linje med kode, 64 00:04:21,089 --> 00:04:23,380 i siste linje av koden vil vi infact dereference y 65 00:04:23,380 --> 00:04:26,380 for å få verdien x og inkrement som. 66 00:04:26,380 --> 00:04:29,540 Vi ville sitte igjen med verdien x er lik 8. 67 00:04:31,580 --> 00:04:33,580 >> Her er en rask oppsummering av de precendence regler som vi har snakket om. 68 00:04:33,580 --> 00:04:37,210 Vi begynner med de innerste parentesene og arbeider utover. 69 00:04:37,210 --> 00:04:41,210 Så vi går videre til suffikset operatører som i + + eller i -. 70 00:04:41,210 --> 00:04:45,920 Deretter dereferanse og adresse operatører som stjerne x eller ampersand x, 71 00:04:45,920 --> 00:04:50,260 og prefikset operatører som + + i eller - i. 72 00:04:50,260 --> 00:04:54,920 Endelig har vi gjøre enkle matematiske operasjoner som multiplikasjon, divisjon, modulo. 73 00:04:54,920 --> 00:04:58,400 Så addisjon, subtraksjon. 74 00:04:58,400 --> 00:05:02,170 Det er precendence. Jeg er Jordan Jozwiak, og dette er CS50. 75 00:05:04,160 --> 00:05:10,480 Vi vil dereferanse og bruke adressen og - hvordan gjør dere setning som? 76 00:05:12,380 --> 00:05:13,190 Jeg er ferdig. Okay.