1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendenza è come rispondere alla domanda: quale operazione dobbiamo fare prima? 2 00:00:10,540 --> 00:00:14,250 Se la risoluzione di equazioni matematiche o linee di analisi di codice informatico, 3 00:00:14,250 --> 00:00:17,230 ci sono regole rigide di precedenza alla quale ci atteniamo 4 00:00:17,230 --> 00:00:20,270 in modo che tutti i computer e le persone possono ottenere lo stesso risultato. 5 00:00:20,270 --> 00:00:24,710 >> Prima di tutto, la regola più importante da ricordare, soprattutto in fase di test bug, 6 00:00:24,710 --> 00:00:27,680 è che si lavora sempre dalle parentesi più interne verso l'esterno. 7 00:00:27,680 --> 00:00:31,120 Utilizzo delle parentesi in più può essere una tattica di debug utile, 8 00:00:31,120 --> 00:00:34,640 ma non è buona pratica lettiera il codice con parentesi non necessari. 9 00:00:34,640 --> 00:00:38,220 Prendetevi il tempo per imparare di base dell'operatore regole di precedenza. 10 00:00:38,220 --> 00:00:42,450 >> La seconda regola generale è che quando gli operatori hanno priorty uguale, 11 00:00:42,450 --> 00:00:44,820 semplicemente risolvere da sinistra a destra. 12 00:00:44,820 --> 00:00:47,690 Quando si tratta di semplice matematica si parte con le parentesi, 13 00:00:47,690 --> 00:00:52,110 poi fare la moltiplicazione e la divisione, e infine fare l'addizione e la sottrazione. 14 00:00:52,110 --> 00:00:54,400 Moltiplicazione e divisione hanno la stessa priorità, 15 00:00:54,400 --> 00:00:56,870 perché sono essenzialmente eseguendo la stessa operazione. 16 00:00:56,870 --> 00:01:00,880 Dopo ogni divisione è semplicemente moltiplicando per l'inverso del valore. 17 00:01:00,880 --> 00:01:04,300 Analogamente, sottrazione viene semplicemente aggiungendo un valore negativo. 18 00:01:04,300 --> 00:01:06,150 >> Facciamo un esempio. 19 00:01:14,470 --> 00:01:18,300 Seguendo l'ordine di precedenza, inizieremo con le parentesi. Nove meno 1. 20 00:01:18,300 --> 00:01:23,410 Questo ci darà 8. Poi si può passare alla divisione e moltiplicazione. 21 00:01:23,410 --> 00:01:27,450 Ci risolvere da sinistra a destra. Quindi 10 diviso 2 è 5. 22 00:01:27,450 --> 00:01:31,290 Abbiamo 5 volte 8 qui, e che ci darà 40. 23 00:01:33,230 --> 00:01:35,410 Quindi si passa al prossimo ordine di precedenza. 24 00:01:35,410 --> 00:01:38,730 Quindi siamo lasciati con 3 più 40 meno 1. 25 00:01:42,400 --> 00:01:43,700 Anche in questo caso solo la risoluzione da sinistra a destra, 26 00:01:43,700 --> 00:01:47,650 perché non c'è la stessa priorità tra l'aggiunta e la sottrazione. 27 00:01:47,650 --> 00:01:51,510 Possiamo dire 3 più 40 è 43, meno 1 è 42. Questa è la nostra risposta. 28 00:01:53,920 --> 00:01:56,730 >> Ci sono 2 tipi di operatori di decremento e incremento; 29 00:01:56,730 --> 00:02:01,000 La forma prefisso, suffisso e la forma. 30 00:02:01,000 --> 00:02:06,130 La forma suffisso, i + +, è comunemente usato nei cicli for, 31 00:02:06,130 --> 00:02:10,500 il che significa che il valore corrente viene utilizzato nell'espressione, e poi viene incrementato. 32 00:02:10,500 --> 00:02:14,240 Quindi, il valore sarà solo diverso la prossima volta che viene utilizzata la variabile. 33 00:02:14,240 --> 00:02:17,910 D'altra parte, l'incremento o decremento prefisso significa che il valore corrente 34 00:02:17,910 --> 00:02:22,760 è incrementato o decrementato prima, e quindi viene utilizzato nell'espressione. 35 00:02:22,760 --> 00:02:25,310 >> Facciamo un esempio con il numero intero x. 36 00:02:25,310 --> 00:02:27,220 Ci impostarlo uguale a 5. 37 00:02:27,220 --> 00:02:36,500 Se usiamo l'operatore suffisso su di esso e dire x + +, x su questa linea è ancora 5. 38 00:02:36,500 --> 00:02:39,230 Se dovessimo stamparla si otterrebbe il valore 5. 39 00:02:39,230 --> 00:02:42,540 Ma andando avanti fatto x1 è uguale a 6. 40 00:02:42,540 --> 00:02:48,770 Quindi, proprio qui su questo x linea è uguale a 6, e se lo stampato si otterrebbe il valore 6. 41 00:02:48,770 --> 00:02:57,380 Ora, se abbiamo usato l'operatore prefisso, + + x, x viene incrementato prima, e poi il valore viene utilizzato. 42 00:02:57,380 --> 00:03:00,110 Quindi è pari a 7 su questa linea. 43 00:03:00,110 --> 00:03:04,750 L'aggiornamento del corso di 6 a 7, e se dovessimo stamparla si otterrebbe il valore 7. 44 00:03:04,750 --> 00:03:09,160 >> La sfumatura ultimo precendenza che vedremo si occupa di notazione dei puntatori. 45 00:03:09,160 --> 00:03:15,050 L'operatore dereferenziare, stelle, ha la priorità su operatori matematici di base, 46 00:03:15,050 --> 00:03:18,550 ma non oltre il incement suffisso e gli operatori decremento. 47 00:03:18,550 --> 00:03:20,690 Questo ci porta al nostro esempio finale. 48 00:03:20,690 --> 00:03:24,500 Prendiamo il numero intero x e impostarlo uguale a 7. 49 00:03:24,500 --> 00:03:30,540 Faremo anche fare un y puntatore e impostarlo uguale all'indirizzo di x. 50 00:03:30,540 --> 00:03:34,920 Così che quando y dereference dovremmo ottenere il valore 7. 51 00:03:34,920 --> 00:03:39,380 Ora, in questa riga di codice, abbiamo una situazione un po 'ambigua. 52 00:03:39,380 --> 00:03:44,310 Stiamo dereferencing y prima, e poi incrementare il valore 7? 53 00:03:44,310 --> 00:03:48,300 Oppure stiamo incrementando il puntatore e poi deferenziandolo? 54 00:03:48,300 --> 00:03:52,800 Infatti, poiché l'operatore di incremento suffisso ha la precedenza su 55 00:03:52,800 --> 00:03:55,370 l'operatore dereference, stiamo cercando di incrementare il puntatore y, 56 00:03:55,370 --> 00:03:59,170 che spostare il puntatore in base alle dimensioni di byte int. 57 00:03:59,170 --> 00:04:03,040 Essenzialmente darci un indirizzo in qualche punto completamente diverso in memoria, 58 00:04:03,040 --> 00:04:05,010 e poi stiamo dereferenziazione. 59 00:04:05,010 --> 00:04:07,350 Quindi questa è la linea molto senso. 60 00:04:07,350 --> 00:04:10,250 Se in realtà voleva incrementare il valore di 7, 61 00:04:10,250 --> 00:04:14,260 dovremmo mettere l'operatore dereference con y tra parentesi. 62 00:04:14,260 --> 00:04:17,290 Poi abbiamo potuto incrementare. 63 00:04:17,290 --> 00:04:21,089 Così, mentre noi non sarebbe incrementare il valore x con la penultima riga di codice, 64 00:04:21,089 --> 00:04:23,380 nell'ultima riga di codice avremmo dereference y infatti 65 00:04:23,380 --> 00:04:26,380 per ottenere il valore x e incrementare quello. 66 00:04:26,380 --> 00:04:29,540 Ci sarebbe rimasto con il valore di x è uguale a 8. 67 00:04:31,580 --> 00:04:33,580 >> Ecco un breve riepilogo delle regole precendenza di cui abbiamo parlato. 68 00:04:33,580 --> 00:04:37,210 Si comincerà con le parentesi più interne e lavorare verso l'esterno. 69 00:04:37,210 --> 00:04:41,210 Poi si passa agli operatori suffissi come i + + o i -. 70 00:04:41,210 --> 00:04:45,920 Poi dereference e l'indirizzo degli operatori come stella x o commerciale x, 71 00:04:45,920 --> 00:04:50,260 e gli operatori in forma prefissa come + + i o - i. 72 00:04:50,260 --> 00:04:54,920 Infine, facciamo le operazioni matematiche semplici come moltiplicazione, divisione, modulo. 73 00:04:54,920 --> 00:04:58,400 Poi addizione, sottrazione. 74 00:04:58,400 --> 00:05:02,170 Questo è precendenza. Sono Jordan Jozwiak, e questo è CS50. 75 00:05:04,160 --> 00:05:10,480 Facciamo una dereference e utilizzare l'indirizzo e - come si fa una frase che? 76 00:05:12,380 --> 00:05:13,190 Ho finito. Va bene.