Ciao e Benvenuto. Ora che abbiamo parlato di
tutti gli operatori principali, quelli fondamentali, quelli bizzarri, dobbiamo parlare
di questo piccolo concetto di precedenza degli operatori.
Quindi questo entra in gioco fondamentalmente quando si valuta l'ordine di questi operatori.
Quindi la precedenza degli operatori determina il raggruppamento dei termini e dell'espressione
e decide come viene valutata un'espressione.
Ora non hai davvero bisogno di capire niente di
tutto questo se usi le parentesi a cui arriveremo tra un secondo, ma devi capire
questo concetto perché fa parte della lingua è parte della comprensione della lingua.
Quindi la precedenza determinerà l'ordine di valutazione quando due
operatori condividono un operando.
E questo diventerà chiaro con un esempio.
Quindi, ad esempio, l'operatore di moltiplicazione ha una precedenza maggiore
rispetto all'operatore aggiuntivo.
Alcuni operatori avranno un ordine di valutazione diverso. Quindi, se dovessi fare un'istruzione composta
in cui stai
eseguendo molti calcoli diversi, ad esempio, 7 più 3 per 2.
Questo può avere più
risultati, l'addizione e tu stai facendo la moltiplicazione.
Devi capire se devo prima fare l'addizione o devo prima fare la moltiplicazione perché a seconda
di ciò che fai prima cambia il risultato.
Quindi, ad esempio, questa x è uguale a 7 più 3 per
2, il risultato può essere 13 o 20 a seconda
dell'ordine in cui si valuta ogni operando.
Quindi l'ordine di esecuzione delle varie operazioni può fare un'enorme differenza.
Ed è per questo che devi capire la precedenza.
C fornisce regole specifiche per scegliere cosa fare prima.
In questo caso, faccio la moltiplicazione di più. Bene, c ti dirà cosa succederà.
Idealmente, se li racchiudi tra parentesi, gli diresti cosa fare,
prenderesti quella decisione. Ma se non lo metti tra parentesi,
il linguaggio di programmazione prenderà la decisione per te.
Quindi in c, la moltiplicazione avrà una precedenza maggiore
rispetto all'operatore di addizione. Quindi quello che succederà è che il risultato sarà 13.
Ora puoi dire 7 più 3, che è 10 e
poi moltiplicare per 2, il risultato sarebbe 20.
Oppure puoi fare 7 più 3 per 2, che è 7 più 6 che è 13.
Quindi è così che puoi avere valori diversi.
È ambiguo. Fai prima il più o prima la moltiplicazione.
Fortunatamente, ancora una volta, è deciso dalla lingua. Ma puoi vedere come ci siano due risultati diversi.
7 più 3 volte 2
o 7 più 3 volte 2. Vedi la pausa lì.
Ora c farà quest'ultimo. Farà prima la moltiplicazione perché ha
una precedenza più alta.
Quindi farà 3 per 2, che è 6 e poi aggiungerà a 7.
Quindi il risultato x sarà 13 perché l'asterisco stella
ha una precedenza maggiore rispetto all'addizione.
E quindi ci sono regole per ogni singolo operatore,
quale operatore ha la precedenza sull'altro.
C'è un livello di precedenza.
E la moltiplicazione e la divisione hanno una precedenza maggiore dell'addizione e della sottrazione.
Quindi vengono eseguiti per primi, per esempio.
Puoi evitare tutta questa precedenza e lasciare che sia la lingua a
decidere per te se fornisci le parentesi.
Le parentesi raggrupperanno sempre le espressioni con
la precedenza più alta. Quindi, se dico 7 più 3 e lo racchiudo
tra parentesi, verrà sempre eseguita prima l'addizione.
Se dico 3
per 2 e lo racchiudo tra parentesi, farà
sempre la moltiplicazione e poi aggiungerà tutto ciò che è al di fuori delle parentesi.
Quindi dovresti davvero usare solo le parentesi. Usa sempre le parentesi.
Altrimenti, la lingua deciderà per te. Devi memorizzare tutti i livelli
di precedenza, cosa difficile da fare, come ti mostrerò nella tabella successiva.
Ci sono molti operatori diversi e devi conoscere la
precedenza per tutti questi diversi operatori.
Quindi può diventare molto molto confuso.
Questo è simile a quello che sai o lasci che la lingua esegua una conversione implicita per te
o la fai con una conversione esplicita con un operatore cast, lo stesso tipo
di idea qui, usa solo le parentesi.
Quindi, se guardiamo questa tabella, che vedremo in un secondo, immagino perché prima
voglio parlare di associatività.
L'associatività è correlata alla precedenza perché cosa succede se
due operatori hanno la stessa precedenza. Allora come si fa a capire l'ordine.
Bene, allora applichi l'associatività. Pertanto, ogni volta che
gli operatori hanno lo stesso livello di precedenza, vengono applicate regole aggiuntive.
Quindi l'associatività è fondamentalmente se inizi o meno
dal lato sinistro e vai a destra o da destra a sinistra.
Quindi, se condividi un operando ed entrambi vengono eseguiti
nello stesso ordine, li eseguirai nell'ordine dell'istruzione basata
sulla regola di associatività. Quindi, per la maggior parte degli
operatori, l'ordine è da sinistra a destra. Quindi lascia che ti mostri un esempio.
Se dici che 1 è uguale a 2 non è uguale a
3, gli operatori uguale a uguale e non uguale a punto
esclamativo uguale hanno la stessa precedenza.
Quindi in questo caso abbiamo un'ambiguità. Abbiamo un problema.
Non sappiamo cosa valutare prima. Non sappiamo se dobbiamo fare 1 è uguale
a 2 o 2
non è uguale a 3 ed è importante perché stai facendo un'espressione booleana.
Questa è un'espressione booleana qui, quindi i ragazzi tornano a vero o falso.
Quindi quello che faresti qui è applicare l'associatività.
L'associatività di entrambi è uguale a uguale e non è uguale a sinistra a destra.
Farai prima 1 uguale a 2, sarà falso.
E poi dirai falso, che non
è uguale a
3, che non è. Quindi 1 è uguale a
2 e quindi non è uguale a 3.
Quindi il risultato sarà falso. Quindi l'espressione a sinistra viene eseguita per
prima e si sposta verso destra.
Quindi come vuoi pensarlo è fondamentalmente uguale a queste parentesi.
Innanzitutto, valuterai che uno è uguale a 2.
E poi se questo restituisce vero o falso, dirai che è uguale a 3.
E questo crea confusione perché non
ha valori veri o falsi.
Ma 1 è uguale a uguale, ricorda che questo è l'operatore di confronto, non è l'operatore di assegnazione.
E non stiamo usando le variabili qui, quindi è ancora più confuso.
Ma se dovessi inserire questi numeri
in variabili, diresti semplicemente come, se x è uguale a y, quindi
se x fosse 1 ey fosse 2, verrebbe valutato 2 falso.
Perché non sono entrambi uguali. E poi se 3 fosse un'altra
variabile z che è uguale a
3, dirai che x è uguale a y è falso, z
è uguale a 3. Quindi falso
non è uguale a 3. Quindi sarebbe falso.
Quindi 1 è uguale a 2 viene eseguito per primo, risulta di nuovo 0 falso.
Quindi 0 non è uguale a 3, viene eseguito risultando 1 vero.
Quindi ho detto inizialmente falso, ma ovviamente 0 non è uguale a 3,
che l'intera cosa valuterà come falso.
Il tutto risulterebbe vero, mi dispiace perché 0 non è uguale a 3.
Quindi 0 non è uguale a 3 Dicevo che è falso perché non sono uguali,
ma ciò significa che in realtà è vero.
Così carino lì. Ora ecco la nostra tabella che
dice tutte le regole di precedenza e associatività ed è molto difficile memorizzarle.
Quindi di nuovo, cosa fai, usa le parentesi.
Ma ecco il tavolo. Il livello di precedenza più alto è
in alto, quindi gli operatori di suffisso hanno il livello di preferenza più alto.
E se stai usando qualcuno di quelli nella stessa espressione, allora leggi
da sinistra a destra.
Quindi gli operatori suffisso, cose come le
parentesi sono la precedenza più alta.
Quindi ogni volta che includi qualcosa tra parentesi, avrà effetto.
Ma hai le parentesi e poi hai
gli operatori di suffisso. Non abbiamo parlato di
un paio di cose sui puntatori, che è questo trattino maggiore di,
ma ora sappiamo di più più e meno
meno che sono postfissi e
hanno la massima precedenza più alta. Operatori unari cose come il più meno, il
punto esclamativo per non, la tilde per bit per bit, il più più
il meno meno e quindi l'operatore di casting viene indicato come operatore unario perché ha solo un operando.
E poi l'operatore asterisco è l'operatore del puntatore. La e commerciale è il bit per bit
e la dimensione di.
Quelli hanno la successiva priorità più alta.
Ma qui stai effettivamente leggendo da destra a
sinistra per la valutazione se hai due dichiarazioni di stato sulla stessa riga.
E poi di nuovo andiamo solo in ordine. Devi conoscere questo ordine e memorizzarlo. È piuttosto difficile da fare,
ma volevo mostrartelo, volevo solo avere una
piccola illustrazione per mostrare alcune delle tabelle. Ci sono molti operatori.
E quindi ci sono molti livelli di presenza e l'associatività per la maggior parte come abbiamo detto
prima è da sinistra a destra.
Hai solo l'associatività di destra sinistra per gli operatori unari.
Quindi gli operatori bit per bit seguono verso il basso,
tutti da sinistra a destra. Operatori ternari condizionali da destra a sinistra.
Gli operatori di assegnazione sono sempre in fondo. Viene sempre valutato per ultimo.
E poi, se sono uguali, gli altri qui li valuti da destra a sinistra.
E poi la virgola viene anche definita operatore. Da sinistra a destra.
Un altro concetto però precedenza e
associatività che non affronteremo realmente
con questi altri esempi. Finiremo per usare le parentesi tutto
il tempo, ed è quello che vuoi fare.
Ma ancora una volta, se vuoi comprendere appieno la lingua, vuoi capire questi concetti, ecco perché te lo dico.
Nessuno può effettivamente affermare di conoscere la lingua se non conosce alcuni dettagli come questo.
Ma usa le parentesi il più possibile. Grazie.