[Powered by Google Translate] Precendence este modul în care noi răspundem la întrebarea, ce operațiune ar trebui să facem mai întâi?
Fie că rezolvarea ecuațiilor matematice sau pe liniile de analizare de cod de computer,
există reguli stricte de prioritate la care aderăm
astfel încât toate calculatoarele și oamenii pot obține același rezultat.
>> În primul rând, regula cea mai important să ne amintim, în special în testarea bug,
este că funcționează întotdeauna din paranteze innermost exterioare.
Folosind paranteze suplimentare pot fi o tactică de depanare de ajutor,
dar nu e bună practică la așternut, codul cu paranteze inutile.
Ia timp pentru a învăța regulile de bază ale operatorului de precedență.
>> A doua regulă generală este că, atunci când operatorii au priorty egal,
te rezolva pur și simplu de la stânga la dreapta.
Atunci când se ocupă cu matematica simplu, vom începe cu paranteze,
apoi face înmulțire și împărțire, și în cele din urmă face adunarea și scăderea.
Înmulțire și împărțire au aceeași prioritate,
deoarece acestea sunt performante în esență, aceeași operațiune.
La urma urmei diviziune este pur și simplu înmulțind cu inversul o valoare.
În mod similar, scăderea este pur si simplu adaugand o valoare negativă.
>> Să facem un exemplu.
În urma ordinea de prioritate, vom începe cu paranteze. Nouă minus 1.
Asta ne va da 8. Atunci putem trece la diviziunea și multiplicarea.
Vom rezolva de la stânga la dreapta. Deci, 10 împărțit la 2 este de 5.
Avem 5 ori 8 aici, și că ne va da 40.
Apoi vom trece la urmatoarea comanda de prioritate.
Deci suntem plecat cu 3 plus 40 minus 1.
Din nou, doar rezolvarea la stânga la dreapta,
pentru ca nu e prioritate egală între adunare și scădere.
Putem spune 3 plus 40 este 43, minus 1 este de 42. Asta e răspunsul nostru.
>> Exista 2 tipuri de operatori de decrementare și creșterea;
Formularul prefix, sufix și forma.
Formularul sufix, i + +, este frecvent utilizat în bucle pentru,
ceea ce înseamnă că valoarea actuală este utilizat în expresie, și apoi este incrementat.
Deci, valoarea va fi doar diferit data viitoare variabilă este folosită.
Pe de altă parte, creșterea sau descreșterea prefixul înseamnă că valoarea curentă
este incrementat sau decrementat în primul rând, și apoi este utilizat în expresie.
>> Să luăm un exemplu cu x număr întreg.
Vom seta egal cu 5.
Dacă vom folosi operatorul sufixul pe ea și să spun x + +, x pe această linie este încă 5.
Dacă ar fi să-l imprimați ne-ar lua valoarea 5.
Dar a merge fapt x1 forward este egal cu 6.
Deci, chiar aici, pe această linie x este egal cu 6, și dacă l-am imprimat ne-ar lua valoarea 6.
Acum, dacă am folosit operatorul prefix, + + x, x este incrementat în primul rând, și apoi valoare este folosită.
Deci, este egal cu 7 pe această linie.
Incrementarea de curs de 6 la 7, și dacă ar fi să-l imprimați ne-ar primi valoarea 7.
>> Nuanța ultimul precendence că ne vom uita la ocazii cu notație pointer.
Operatorul dereference, stele, are prioritate față de operatorii de matematica de bază,
dar nu mai mult incement sufixul și operatorii de decrementare.
Acest lucru ne conduce la exemplul nostru final.
Să luăm x întreg și setați-l egal cu 7.
Vom face, de asemenea, un pointer y și setați-o egală cu adresa lui x.
, Astfel că, atunci când ne y dereference ar trebui să ne valoarea 7.
Acum, în această linie de cod, avem o situație oarecum ambiguă.
Suntem dereferencing y în primul rând, și apoi incrementare valoarea 7?
Sau ne incrementarea indicatorul și apoi dereferencing asta?
De fapt, pentru că operatorul de incrementare sufixul are prioritate peste
operatorul dereference, suntem încercarea de a incrementa y indicatorul,
care s-ar muta indicatorul de dimensiunea de octeți int.
În esență, oferindu-ne o adresă într-un anumit moment cu totul diferit în memorie,
și apoi ne-l dereferencing.
Deci, acest lucru este foarte linie lipsită de sens.
Dacă am vrut de fapt, pentru a incrementa valoarea de 7,
ne-ar trebui pentru a pune operatorului dereference cu y în paranteze.
Apoi ne-am putea incrementa.
Deci, în timp ce noi nu ar fi incrementarea x valoarea cu doua ultima linie de cod,
în ultimul rând de cod ne-ar dereference y ru º inos
pentru a obține valoarea x și incrementa asta.
Ne-ar fi lăsat cu valoarea x este egal cu 8.
>> Iată o recapitulare rapidă a normelor precendence pe care le-am vorbit despre.
Vom începe cu paranteze innermost și să lucreze afară.
Apoi vom trece la operatorii sufixul i + +, cum ar fi sau i -.
Apoi dereference și adresa operatorilor cum ar fi stele x sau x ampersand,
și operatori prefix + +, cum ar fi I sau - i.
În cele din urmă vom face operațiunile simple de matematică, cum ar fi de multiplicare, diviziune, modulo.
Apoi adunare, scădere.
Asta e precendence. Sunt Iordania Jozwiak, iar acest lucru este CS50.
Vom dereference și de a folosi adresa și - cum a face tu fraza asta?
Am terminat. Bine.