1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence este modul în care noi răspundem la întrebarea, ce operațiune ar trebui să facem mai întâi? 2 00:00:10,540 --> 00:00:14,250 Fie că rezolvarea ecuațiilor matematice sau pe liniile de analizare de cod de computer, 3 00:00:14,250 --> 00:00:17,230 există reguli stricte de prioritate la care aderăm 4 00:00:17,230 --> 00:00:20,270 astfel încât toate calculatoarele și oamenii pot obține același rezultat. 5 00:00:20,270 --> 00:00:24,710 >> În primul rând, regula cea mai important să ne amintim, în special în testarea bug, 6 00:00:24,710 --> 00:00:27,680 este că funcționează întotdeauna din paranteze innermost exterioare. 7 00:00:27,680 --> 00:00:31,120 Folosind paranteze suplimentare pot fi o tactică de depanare de ajutor, 8 00:00:31,120 --> 00:00:34,640 dar nu e bună practică la așternut, codul cu paranteze inutile. 9 00:00:34,640 --> 00:00:38,220 Ia timp pentru a învăța regulile de bază ale operatorului de precedență. 10 00:00:38,220 --> 00:00:42,450 >> A doua regulă generală este că, atunci când operatorii au priorty egal, 11 00:00:42,450 --> 00:00:44,820 te rezolva pur și simplu de la stânga la dreapta. 12 00:00:44,820 --> 00:00:47,690 Atunci când se ocupă cu matematica simplu, vom începe cu paranteze, 13 00:00:47,690 --> 00:00:52,110 apoi face înmulțire și împărțire, și în cele din urmă face adunarea și scăderea. 14 00:00:52,110 --> 00:00:54,400 Înmulțire și împărțire au aceeași prioritate, 15 00:00:54,400 --> 00:00:56,870 deoarece acestea sunt performante în esență, aceeași operațiune. 16 00:00:56,870 --> 00:01:00,880 La urma urmei diviziune este pur și simplu înmulțind cu inversul o valoare. 17 00:01:00,880 --> 00:01:04,300 În mod similar, scăderea este pur si simplu adaugand o valoare negativă. 18 00:01:04,300 --> 00:01:06,150 >> Să facem un exemplu. 19 00:01:14,470 --> 00:01:18,300 În urma ordinea de prioritate, vom începe cu paranteze. Nouă minus 1. 20 00:01:18,300 --> 00:01:23,410 Asta ne va da 8. Atunci putem trece la diviziunea și multiplicarea. 21 00:01:23,410 --> 00:01:27,450 Vom rezolva de la stânga la dreapta. Deci, 10 împărțit la 2 este de 5. 22 00:01:27,450 --> 00:01:31,290 Avem 5 ori 8 aici, și că ne va da 40. 23 00:01:33,230 --> 00:01:35,410 Apoi vom trece la urmatoarea comanda de prioritate. 24 00:01:35,410 --> 00:01:38,730 Deci suntem plecat cu 3 plus 40 minus 1. 25 00:01:42,400 --> 00:01:43,700 Din nou, doar rezolvarea la stânga la dreapta, 26 00:01:43,700 --> 00:01:47,650 pentru ca nu e prioritate egală între adunare și scădere. 27 00:01:47,650 --> 00:01:51,510 Putem spune 3 plus 40 este 43, minus 1 este de 42. Asta e răspunsul nostru. 28 00:01:53,920 --> 00:01:56,730 >> Exista 2 tipuri de operatori de decrementare și creșterea; 29 00:01:56,730 --> 00:02:01,000 Formularul prefix, sufix și forma. 30 00:02:01,000 --> 00:02:06,130 Formularul sufix, i + +, este frecvent utilizat în bucle pentru, 31 00:02:06,130 --> 00:02:10,500 ceea ce înseamnă că valoarea actuală este utilizat în expresie, și apoi este incrementat. 32 00:02:10,500 --> 00:02:14,240 Deci, valoarea va fi doar diferit data viitoare variabilă este folosită. 33 00:02:14,240 --> 00:02:17,910 Pe de altă parte, creșterea sau descreșterea prefixul înseamnă că valoarea curentă 34 00:02:17,910 --> 00:02:22,760 este incrementat sau decrementat în primul rând, și apoi este utilizat în expresie. 35 00:02:22,760 --> 00:02:25,310 >> Să luăm un exemplu cu x număr întreg. 36 00:02:25,310 --> 00:02:27,220 Vom seta egal cu 5. 37 00:02:27,220 --> 00:02:36,500 Dacă vom folosi operatorul sufixul pe ea și să spun x + +, x pe această linie este încă 5. 38 00:02:36,500 --> 00:02:39,230 Dacă ar fi să-l imprimați ne-ar lua valoarea 5. 39 00:02:39,230 --> 00:02:42,540 Dar a merge fapt x1 forward este egal cu 6. 40 00:02:42,540 --> 00:02:48,770 Deci, chiar aici, pe această linie x este egal cu 6, și dacă l-am imprimat ne-ar lua valoarea 6. 41 00:02:48,770 --> 00:02:57,380 Acum, dacă am folosit operatorul prefix, + + x, x este incrementat în primul rând, și apoi valoare este folosită. 42 00:02:57,380 --> 00:03:00,110 Deci, este egal cu 7 pe această linie. 43 00:03:00,110 --> 00:03:04,750 Incrementarea de curs de 6 la 7, și dacă ar fi să-l imprimați ne-ar primi valoarea 7. 44 00:03:04,750 --> 00:03:09,160 >> Nuanța ultimul precendence că ne vom uita la ocazii cu notație pointer. 45 00:03:09,160 --> 00:03:15,050 Operatorul dereference, stele, are prioritate față de operatorii de matematica de bază, 46 00:03:15,050 --> 00:03:18,550 dar nu mai mult incement sufixul și operatorii de decrementare. 47 00:03:18,550 --> 00:03:20,690 Acest lucru ne conduce la exemplul nostru final. 48 00:03:20,690 --> 00:03:24,500 Să luăm x întreg și setați-l egal cu 7. 49 00:03:24,500 --> 00:03:30,540 Vom face, de asemenea, un pointer y și setați-o egală cu adresa lui x. 50 00:03:30,540 --> 00:03:34,920 , Astfel că, atunci când ne y dereference ar trebui să ne valoarea 7. 51 00:03:34,920 --> 00:03:39,380 Acum, în această linie de cod, avem o situație oarecum ambiguă. 52 00:03:39,380 --> 00:03:44,310 Suntem dereferencing y în primul rând, și apoi incrementare valoarea 7? 53 00:03:44,310 --> 00:03:48,300 Sau ne incrementarea indicatorul și apoi dereferencing asta? 54 00:03:48,300 --> 00:03:52,800 De fapt, pentru că operatorul de incrementare sufixul are prioritate peste 55 00:03:52,800 --> 00:03:55,370 operatorul dereference, suntem încercarea de a incrementa y indicatorul, 56 00:03:55,370 --> 00:03:59,170 care s-ar muta indicatorul de dimensiunea de octeți int. 57 00:03:59,170 --> 00:04:03,040 În esență, oferindu-ne o adresă într-un anumit moment cu totul diferit în memorie, 58 00:04:03,040 --> 00:04:05,010 și apoi ne-l dereferencing. 59 00:04:05,010 --> 00:04:07,350 Deci, acest lucru este foarte linie lipsită de sens. 60 00:04:07,350 --> 00:04:10,250 Dacă am vrut de fapt, pentru a incrementa valoarea de 7, 61 00:04:10,250 --> 00:04:14,260 ne-ar trebui pentru a pune operatorului dereference cu y în paranteze. 62 00:04:14,260 --> 00:04:17,290 Apoi ne-am putea incrementa. 63 00:04:17,290 --> 00:04:21,089 Deci, în timp ce noi nu ar fi incrementarea x valoarea cu doua ultima linie de cod, 64 00:04:21,089 --> 00:04:23,380 în ultimul rând de cod ne-ar dereference y ru º inos 65 00:04:23,380 --> 00:04:26,380 pentru a obține valoarea x și incrementa asta. 66 00:04:26,380 --> 00:04:29,540 Ne-ar fi lăsat cu valoarea x este egal cu 8. 67 00:04:31,580 --> 00:04:33,580 >> Iată o recapitulare rapidă a normelor precendence pe care le-am vorbit despre. 68 00:04:33,580 --> 00:04:37,210 Vom începe cu paranteze innermost și să lucreze afară. 69 00:04:37,210 --> 00:04:41,210 Apoi vom trece la operatorii sufixul i + +, cum ar fi sau i -. 70 00:04:41,210 --> 00:04:45,920 Apoi dereference și adresa operatorilor cum ar fi stele x sau x ampersand, 71 00:04:45,920 --> 00:04:50,260 și operatori prefix + +, cum ar fi I sau - i. 72 00:04:50,260 --> 00:04:54,920 În cele din urmă vom face operațiunile simple de matematică, cum ar fi de multiplicare, diviziune, modulo. 73 00:04:54,920 --> 00:04:58,400 Apoi adunare, scădere. 74 00:04:58,400 --> 00:05:02,170 Asta e precendence. Sunt Iordania Jozwiak, iar acest lucru este CS50. 75 00:05:04,160 --> 00:05:10,480 Vom dereference și de a folosi adresa și - cum a face tu fraza asta? 76 00:05:12,380 --> 00:05:13,190 Am terminat. Bine.