1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence er, hvordan vi besvare spørgsmålet, hvad skal operation vi gøre først? 2 00:00:10,540 --> 00:00:14,250 Hvorvidt løse matematiske ligninger eller parsing linjer af computer-kode, 3 00:00:14,250 --> 00:00:17,230 der er strenge regler for forrang, som vi overholder 4 00:00:17,230 --> 00:00:20,270 således at alle computere og mennesker kan få det samme resultat. 5 00:00:20,270 --> 00:00:24,710 >> Først off, den vigtigste regel at huske, især i bug test, 6 00:00:24,710 --> 00:00:27,680 er, at vi altid arbejder ud fra de inderste parenteser udad. 7 00:00:27,680 --> 00:00:31,120 Brug ekstra parenteser kan være et nyttigt debugging taktik, 8 00:00:31,120 --> 00:00:34,640 men det er ikke god praksis at kuld din kode med unødvendige parenteser. 9 00:00:34,640 --> 00:00:38,220 Tag dig tid til at lære de grundlæggende operatør forrang regler. 10 00:00:38,220 --> 00:00:42,450 >> Den anden generelle regel er, at når operatørerne har lige priorty, 11 00:00:42,450 --> 00:00:44,820 man simpelthen løse fra venstre mod højre. 12 00:00:44,820 --> 00:00:47,690 Når man har med simpel matematik vi starter med parenteser, 13 00:00:47,690 --> 00:00:52,110 derefter gøre multiplikation og division, og endelig gøre addition og subtraktion. 14 00:00:52,110 --> 00:00:54,400 Multiplikation og division har samme prioritet, 15 00:00:54,400 --> 00:00:56,870 fordi de i det væsentlige udfører den samme operation. 16 00:00:56,870 --> 00:01:00,880 Jo division er simpelthen multiplikation med den inverse af en værdi. 17 00:01:00,880 --> 00:01:04,300 Tilsvarende er subtraktion blot at tilføje en negativ værdi. 18 00:01:04,300 --> 00:01:06,150 >> Lad os lave et eksempel. 19 00:01:14,470 --> 00:01:18,300 Efter rangfølge, vil vi starte med parenteser. Ni minus 1. 20 00:01:18,300 --> 00:01:23,410 Det vil give os 8. Så kan vi gå videre til division og multiplikation. 21 00:01:23,410 --> 00:01:27,450 Vi løser fra venstre mod højre. Så 10 divideret med 2, er fem. 22 00:01:27,450 --> 00:01:31,290 Vi har 5 gange 8 her, og det vil give os 40. 23 00:01:33,230 --> 00:01:35,410 Så vi går videre til næste rangfølge. 24 00:01:35,410 --> 00:01:38,730 Så vi er tilbage med 3 plus 40 minus 1. 25 00:01:42,400 --> 00:01:43,700 Igen bare løse venstre mod højre, 26 00:01:43,700 --> 00:01:47,650 fordi der er lige så højt mellem addition og subtraktion. 27 00:01:47,650 --> 00:01:51,510 Vi kan sige 3 plus 40 er 43, minus 1 er 42. Det er vores svar. 28 00:01:53,920 --> 00:01:56,730 >> Der er 2 typer af formindskelsesdata og tilvækst operatører; 29 00:01:56,730 --> 00:02:01,000 Forstavelsen form, og suffikset form. 30 00:02:01,000 --> 00:02:06,130 Suffikset form, i + +, er almindeligt anvendt i for loops, 31 00:02:06,130 --> 00:02:10,500 hvilket betyder, at den aktuelle værdi anvendes i udtrykket, og derefter inkrementeres. 32 00:02:10,500 --> 00:02:14,240 Så værdi vil kun være forskellig, næste gang variabel anvendes. 33 00:02:14,240 --> 00:02:17,910 På den anden side betyder forstavelsen forøgelsen eller formindskelsen at den aktuelle værdi 34 00:02:17,910 --> 00:02:22,760 inkrementeres eller dekrementeres først, og derefter det anvendes i udtrykket. 35 00:02:22,760 --> 00:02:25,310 >> Lad os tage et eksempel med heltal x. 36 00:02:25,310 --> 00:02:27,220 Vi vil sætte den lig med 5. 37 00:02:27,220 --> 00:02:36,500 Hvis vi bruge endelsen operatør på det og sige x + +, x på denne linie er stadig 5. 38 00:02:36,500 --> 00:02:39,230 Hvis vi skulle printe det ud vi ville få værdien 5. 39 00:02:39,230 --> 00:02:42,540 Men fremadrettet x1 faktum er lig 6. 40 00:02:42,540 --> 00:02:48,770 Så lige her på denne linie x er lig med 6, og hvis vi udskrives det ud vi ville få værdien 6. 41 00:02:48,770 --> 00:02:57,380 Nu, hvis vi anvendte præfiksoperatoren, + + x, x inkrementeres først og derefter den værdi anvendes. 42 00:02:57,380 --> 00:03:00,110 Så det er lig med 7 på denne linje. 43 00:03:00,110 --> 00:03:04,750 Forøgelsen af ​​bane 6 til 7, og hvis vi skulle printe det ud vi ville få værdien 7. 44 00:03:04,750 --> 00:03:09,160 >> Den sidste nuance i precendence, at vi vil se på omhandler pointer notation. 45 00:03:09,160 --> 00:03:15,050 Den dereference operatør, stjerne, har prioritet over basale matematiske operatører, 46 00:03:15,050 --> 00:03:18,550 men ikke over endelsen incement og formindskelsesdata operatører. 47 00:03:18,550 --> 00:03:20,690 Dette fører os til vores sidste eksempel. 48 00:03:20,690 --> 00:03:24,500 Lad os tage det hele tal x og sæt den lig med 7. 49 00:03:24,500 --> 00:03:30,540 Vi vil også gøre en pegepind y og sæt den lig med adressen på x. 50 00:03:30,540 --> 00:03:34,920 Så når vi dereference y vi bør få værdien 7. 51 00:03:34,920 --> 00:03:39,380 Nu i denne linje kode, har vi en noget tvetydig situation. 52 00:03:39,380 --> 00:03:44,310 Er vi dereferere y først, og derefter inkrementere værdien 7? 53 00:03:44,310 --> 00:03:48,300 Eller er vi inkrementere markøren og derefter dereferere det? 54 00:03:48,300 --> 00:03:52,800 Faktisk suffikset inkrementeringsoperatoren fordi har forrang 55 00:03:52,800 --> 00:03:55,370 den dereference operatør, vi forsøger at inkrementere pointer y, 56 00:03:55,370 --> 00:03:59,170 hvilket ville flytte markøren ved størrelsen af ​​int bytes. 57 00:03:59,170 --> 00:04:03,040 Grundlæggende giver os en adresse i nogle helt andet sted i hukommelsen, 58 00:04:03,040 --> 00:04:05,010 og så er vi dereferere det. 59 00:04:05,010 --> 00:04:07,350 Så det er meget meningsløs linje. 60 00:04:07,350 --> 00:04:10,250 Hvis vi ønskede egentlig at øge værdien på 7, 61 00:04:10,250 --> 00:04:14,260 ville vi nødt til at sætte dereference operatør med y i parentes. 62 00:04:14,260 --> 00:04:17,290 Så kunne vi forøge det. 63 00:04:17,290 --> 00:04:21,089 Så mens vi ikke ville forøgelse af værdien x med den næstsidste linje kode, 64 00:04:21,089 --> 00:04:23,380 i sidste linje kode, vi ville infact dereference y 65 00:04:23,380 --> 00:04:26,380 at få værdien x og inkrementere denne. 66 00:04:26,380 --> 00:04:29,540 Vi ville stå tilbage med værdien x er lig med 8. 67 00:04:31,580 --> 00:04:33,580 >> Her er en hurtig resumé af de precendence regler, som vi har talt om. 68 00:04:33,580 --> 00:04:37,210 Vi begynder med de inderste parenteser og arbejde udad. 69 00:04:37,210 --> 00:04:41,210 Så går vi videre til suffix udbydere som i + + eller i -. 70 00:04:41,210 --> 00:04:45,920 Så dereference og adresse operatører som stjerne x eller tegnet x, 71 00:04:45,920 --> 00:04:50,260 og præfikset udbydere som + + I, eller - i. 72 00:04:50,260 --> 00:04:54,920 Endelig vi gør det simple matematiske operationer som multiplikation, division, modulo. 73 00:04:54,920 --> 00:04:58,400 Derefter addition, subtraktion. 74 00:04:58,400 --> 00:05:02,170 Det er precendence. Jeg Jordan Jozwiak, og dette er CS50. 75 00:05:04,160 --> 00:05:10,480 Vi får dereference og bruge den adresse og - hvordan gør du frase det? 76 00:05:12,380 --> 00:05:13,190 Jeg er færdig. Okay.