{"id":6601,"date":"2011-04-13T13:58:42","date_gmt":"2011-04-13T11:58:42","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=6601"},"modified":"2011-10-05T12:22:08","modified_gmt":"2011-10-05T10:22:08","slug":"7-operazioni-matematiche-e-logiche","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/7-operazioni-matematiche-e-logiche\/","title":{"rendered":"7. Operazioni matematiche e logiche"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-00.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-00.jpg\" alt=\"corso-completo-c-Operazioni-matematiche-e-logiche-00\" title=\"corso-completo-c-Operazioni-matematiche-e-logiche-00\" width=\"200\" height=\"100\" class=\"alignleft size-full wp-image-6606\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-00.jpg 200w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-00-150x75.jpg 150w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/a> Eccoci al settimo appuntamento con il nostro Corso Completo di Programmazione in C. Ora che abbiamo imparato dichiarare e inizializzare le nostre variabili \u00e8 il momento di iniziare a scrivere qualche programma che le utilizzi per davvero, parleremo quindi delle principali funzioni matematiche e logiche. Per fare qualche esempio, per\u00f2, avremo prima bisogno di capire come visualizzare a schermo il valore delle variabili.<!--more--><\/p>\n<h4>Visualizzazione delle variabili<\/h4>\n<p>I programmi che scriveremo in questo corso saranno soprattutto programmi di tipo &#8220;console&#8221;, non avranno interfaccia grafica quindi per poter visualizzare a schermo il risultato delle nostre operazioni sar\u00e0 necessario utilizzare la funzione <em>printf<\/em>, una funzione molto versatile che ci permetter\u00e0 di scrivere del testo sul terminale.<\/p>\n<p>La funzione <em>printf<\/em>, in realt\u00e0, non fa propriamente parte del linguaggio C, il linguaggio non possiede infatti alcuna funzione di &#8220;input\/output&#8221;, queste funzioni vengono messe invece a disposizione da alcune librerie esterne, che possono essere aggiunte o meno ai nostri programmi.<\/p>\n<p>La libreria che contiene la funzione <em>printf<\/em> si chiama &#8220;standar input output&#8221; e per specificare al compilatore che vogliamo utilizzarla nel nostro programma dovremo scrivere, in cima e prima di qualsiasi altra istruzione:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\n#include <stdio.h>\r\n<\/pre>\n<p><em>stdio.h<\/em> \u00e8 detto &#8220;file header&#8221; ed \u00e8 uno dei, solitamente due, file che compongono una libreria. Pi\u00f9 avanti nel corso creeremo anche noi una nostra personale libreria di funzioni, per il momento ci basta sapere che nei file *.h \u00e8 presente una sorta di &#8220;indice&#8221; di tutte le funzioni che compongono la libreria stessa.<\/p>\n<p>Se siamo curiosi e vogliamo esaminare il contenuto del file &#8220;stdio.h&#8221; possiamo trovarlo all&#8217;interno della cartella &#8220;\/usr\/include&#8221;<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-01.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-01.jpg\" alt=\"corso-completo-c-Operazioni-matematiche-e-logiche-01\" title=\"corso-completo-c-Operazioni-matematiche-e-logiche-01\" width=\"550\" height=\"338\" class=\"aligncenter size-full wp-image-6604\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-01.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-01-300x184.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>L&#8217;utilizzo della funzione &#8220;printf&#8221; \u00e8 molto semplice, ma ci sono alcuni parametri che bisogna ricordare. La sintassi della funzione \u00e8 la seguente:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\nprintf(\"Stringa da visualizzare\",variabile1 , variabile2, \u2026 variabileN);\r\n<\/pre>\n<p>La potenzialit\u00e0 sta nel fatto che all&#8217;interno della &#8220;Stringa da visualizzare&#8221; si possono inserire dei caratteri speciali, dei <em>placeholder<\/em> che in fase di esecuzione del programma vengono sostituiti con la variabile in posizione corrispondente nella lista delle variabili.<\/p>\n<p>Ad esempio, se la variabile &#8220;nome_variabile&#8221; ha valore &#8220;42&#8221; per visualizzare a schermo la dicitura: &#8220;Il valore della variabile \u00e8: 42&#8221; dobbiamo scrivere:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\nprintf(\"Il valore della variabile \u00e8: %d\\n\", nome_variabile);\r\n<\/pre>\n<p>In questo caso il carattere %d \u00e8 il placeholder e viene sostituito in fase di esecuzione con il valore di nome_variabile.<\/p>\n<p>Per chiarezza ecco il codice completo:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\n#include <stdio.h>\r\n\r\nint main(int argc, char **argv)\r\n\r\n{\r\n\r\n int pippo;\r\n\r\n pippo = 42;\r\n\r\n printf(\"Il valore della variabile \u00e8: %d\\n\",pippo );\r\n\r\n return 0;\r\n\r\n}\r\n<\/pre>\n<p>Una volta compilato il risultato sar\u00e0 il seguente:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-02.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-02.jpg\" alt=\"corso-completo-c-Operazioni-matematiche-e-logiche-02\" title=\"corso-completo-c-Operazioni-matematiche-e-logiche-02\" width=\"358\" height=\"211\" class=\"aligncenter size-full wp-image-6605\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-02.jpg 358w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-02-300x176.jpg 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/04\/corso-completo-c-Operazioni-matematiche-e-logiche-02-150x88.jpg 150w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Esistono diversi tipi di placeholder, a seconda della variabile che vogliamo visualizzare, in questo elenco ho inserito i pi\u00f9 comuni.<\/p>\n<ul>\n<li><strong>%c:<\/strong> carattere (<em>char<\/em>);<\/li>\n<li><strong>%d:<\/strong> numero intero (<em>int<\/em>);<\/li>\n<li><strong>%e:<\/strong> numero decimale (<em>float<\/em>) in notazione esponenziale;<\/li>\n<li><strong>%le:<\/strong> numero decimale (<em>double<\/em>) in notazione esponenziale;<\/li>\n<li><strong>%f:<\/strong> numero decimale (<em>float<\/em>) in notazione decimale;<\/li>\n<li><strong>%lf:<\/strong> numero decimale (<em>double<\/em>) in notazione decimale;<\/li>\n<li><strong>%Lf:<\/strong> numero decimale (<em>long double<\/em>) in notazione decimale;<\/li>\n<\/ul>\n<p>La lista \u00e8 parecchio lunga, vi rimando alla pagina di wikipedia per l&#8217;elenco completo (<a href=\"http:\/\/it.wikipedia.org\/wiki\/Printf\" target=\"_blank\">link<\/a>).<\/p>\n<p><strong>Nota:<\/strong> i caratteri &#8220;\\n&#8221; che vedete alla fine della riga indicano un &#8220;a capo&#8221; e anche se sono due simboli \u00e8 a tutti gli effetti considerato come un unico carattere, quindi potrebbe essere memorizzato anche all&#8217;interno di una variabile di tipo char.<\/p>\n<h4>Operatori matematici<\/h4>\n<p>Le prime operazioni che incontriamo con le variabili sono le quattro operazioni aritmetiche di base. Per somma, differenza e prodotto non ci sono paricolarit\u00e0, infatti per calcolarle, supponento che a, b e risultato siano tre variabili intere, potremmo scrivere:<\/p>\n<p><code><br \/>\nrisultato = a + b;<br \/>\nrisultato = a - b;<br \/>\nrisultato = a * b;<br \/>\n<\/code><\/p>\n<p>Qualche piccola differenza la presenta invece la divisione, perch\u00e9 il simbolo comunemente utilizzato per la divsione (&#8221; \/ &#8220;) ha un comportamento diverso a seconda dei valori del dividendo e del divisore.<\/p>\n<p>Se entrambi sono numeri interi, allora la divisione restituisce un valore intero,  troncando quindi eventuali cifre decimali, viceversa se almeno uno tra dividendo e divisore \u00e8 di tipo <em>float<\/em> o <em>double<\/em> il risultato sar\u00e0 di tipo <em>float<\/em>.<\/p>\n<p>Possiamo vedere un esempio di questo comportamento in questo programma:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\n#include <stdio.h>\r\n\r\nint main(int argc, char **argv)\r\n\r\n{\r\n\r\n int p,q,r;\r\n\r\n float x,y,z;\r\n\r\n p = 10;\r\n\r\n q = 3;\r\n\r\n r = p \/ q;\r\n\r\n x = 10.0;\r\n\r\n y = 3.0;\r\n\r\n z = x \/ y;\r\n\r\n printf(\"Risultato divisione intera: %d\\n\"r);\r\n\r\n printf(\"Risultato divisione tra float: %f\\n\",z);\r\n\r\n return 0;\r\n\r\n}\r\n<\/pre>\n<p>L&#8217;output di questo programma \u00e8:<\/p>\n<p><code><br \/>\nRisultato divisione intera: 3<br \/>\nRisultato divisione tra float: 3.333333<br \/>\n<\/code><\/p>\n<p>Un&#8217;altra operazione molto usata \u00e8 la funzione modulo, che in matematica \u00e8 una funzione ben definita e rigorosa, ma per tutti gli altri \u00e8 semplicemente il resto della divisione.<\/p>\n<p>Il suo simbolo \u00e8 &#8221; % &#8221; e si usa in questo modo:<\/p>\n<p><code><br \/>\nrisultato = 10 % 3;<br \/>\n<\/code><\/p>\n<p>In questo caso il valore assegnato a risultato sar\u00e0 1.<\/p>\n<p>La funzione modulo \u00e8 utilissima per riconoscere se un numero \u00e8 multiplo di un&#8217;altro, perch\u00e9 in quel caso il resto della divisione (il modulo) \u00e8 zero.<\/p>\n<p>Rivediamo in un programma completo un p\u00f2 di esempi:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\n#include <stdio.h>\r\n\r\nint main(int argc, char **argv)\r\n\r\n{\r\n\r\n int a,b,c,risultato;\r\n\r\n a = 10;\r\n\r\n b = 5;\r\n\r\n c = 2;\r\n\r\n risultato = a + b;\r\n\r\n printf(\"Somma 10 + 5: %d\\n\", risultato);\r\n\r\n risultato = a - b;\r\n\r\n printf(\"Differenza 10 - 5: %d\\n\",risultato);\r\n\r\n risultato = a * b;\r\n\r\n printf(\"Prodotto 10 per 5: %d\\n\", risultato);\r\n\r\n risultato = a \/ b;\r\n\r\n printf(\"Divisione 10 per 5: %d\\n\",risultato);\r\n\r\n risultato = a % b;\r\n\r\n printf(\"Resto della divisione %d\",risultato);\r\n\r\n return 0;\r\n\r\n}\r\n<\/pre>\n<p>Esistono altre operazioni matematiche, tutte memorizzate nella libreria &#8220;Math.h&#8221;, per utilizzarle \u00e8 quindi necessario aggiungere in cima al file il testo &#8220;#include <math.h>&#8220;.<\/p>\n<p>Questa tabella \u00e8 stata presa dalla pagina di <a href=\"http:\/\/it.wikipedia.org\/wiki\/Math.h\" target=\"_blank\">wikipedia<\/a><\/p>\n<table>\n<tr>\n<td><strong>Membro<\/strong><\/td>\n<td><strong>Descrizione<\/strong><\/td>\n<\/tr>\n<tr>\n<td>acos<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Arcocoseno\" target=\"_blank\">arcocoseno<\/a><\/td>\n<\/tr>\n<tr>\n<td>asin<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Arcoseno\" target=\"_blank\">arcoseno<\/a><\/td>\n<\/tr>\n<tr>\n<td>atan<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Arcotangente\" target=\"_blank\">arcotangente<\/a><\/td>\n<\/tr>\n<tr>\n<td>atan2<\/td>\n<td>arcotangente di due parametri<\/td>\n<\/tr>\n<tr>\n<td>ceil<\/td>\n<td>l&#8217;<a href=\"http:\/\/it.wikipedia.org\/wiki\/Intero\" target=\"_blank\">intero<\/a> minore non minore del parametro<\/td>\n<\/tr>\n<tr>\n<td>cos<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Coseno\" target=\"_blank\">coseno<\/a><\/td>\n<\/tr>\n<tr>\n<td>cosh<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Coseno_iperbolico\" target=\"_blank\">coseno iperbolico<\/a><\/td>\n<\/tr>\n<tr>\n<td>exp(double x)<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Esponenziale\" target=\"_blank\">funzione esponenziale<\/a>, calcola ex<\/td>\n<\/tr>\n<tr>\n<td>fabs<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Valore_assoluto\" target=\"_blank\">valore assoluto<\/a><\/td>\n<\/tr>\n<tr>\n<td>floor<\/td>\n<td>l&#8217;intero maggiore non maggiore del parametro<\/td>\n<\/tr>\n<tr>\n<td>fmod<\/td>\n<td>resto del numero in virgola mobile<\/td>\n<\/tr>\n<tr>\n<td>frexp<\/td>\n<td>frazione e potenza di due.<\/td>\n<\/tr>\n<tr>\n<td>ldexp<\/td>\n<td>operazione in virgola mobile<\/td>\n<\/tr>\n<tr>\n<td>log<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Logaritmo_naturale\" target=\"_blank\">logaritmo naturale<\/a><\/td>\n<\/tr>\n<tr>\n<td>log10<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Logaritmo\" target=\"_blank\">logaritmo<\/a> in base 10<\/td>\n<\/tr>\n<tr>\n<td>pow(x,y)<\/td>\n<td>eleva un valore dato ad esponente, xy<\/td>\n<\/tr>\n<tr>\n<td>sin<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Seno_%28matematica%29\" target=\"_blank\">seno<\/a><\/td>\n<\/tr>\n<tr>\n<td>sinh<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Seno_iperbolico\" target=\"_blank\">seno iperbolico<\/a><\/td>\n<\/tr>\n<tr>\n<td>sqrt<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Radice_quadrata\" target=\"_blank\">radice quadrata<\/a><\/td>\n<\/tr>\n<tr>\n<td>tan<\/td>\n<td><a href=\"http:\/\/it.wikipedia.org\/wiki\/Tangente_%28geometria%29\" target=\"_blank\">tangente<\/a><\/td>\n<\/tr>\n<tr>\n<td>tanh<\/td>\n<td>tangente iperbolica<\/td>\n<\/tr>\n<\/table>\n<h4>Operatori logici<\/h4>\n<p>Particolare importanza in tutti i linguaggi di programmazione rivestono le funzioni logiche.<\/p>\n<p>Certo che tutti, qui, hanno avuto a che fare con la logica booleana non mi soffermer\u00f2 molto su che cos&#8217;\u00e8 una funzione logica, ma vedremo come queste sono implementate nel linguaggio C.<\/p>\n<p>Nel linguaggio ANSI C non esiste alcun tipo di dato per esprimere il concetto di &#8220;vero&#8221; o &#8220;falso&#8221; e viene utilizzato lo zero come simbolo per identificare il falso e qualsiasi valore diverso da zero come vero. Con lo standard registrato nel 1999 \u00e8 stato introdotto il tipo di dato &#8220;boolean&#8221;, ma soprattutto per compatibilit\u00e0 con altri linguaggi.<\/p>\n<p><strong>Gli operatori logici sono:<\/strong><\/p>\n<table>\n<tr>\n<td><strong>Operatore<\/strong><\/td>\n<td><strong>Simbolo in C<\/strong><\/td>\n<td><strong>Significato<\/strong><\/td>\n<td><strong>Esempio<\/strong><\/td>\n<\/tr>\n<tr>\n<td>AND<\/td>\n<td>&#038;&#038;<\/td>\n<td>vera se e solo se sia a, sia b sono vere<\/td>\n<td>(a &#038;&#038; b)<\/td>\n<\/tr>\n<tr>\n<td>OR<\/td>\n<td>||<\/td>\n<td>vera se a o b o entrambe sono vere<\/td>\n<td>(a || b)<\/td>\n<\/tr>\n<tr>\n<td>NOT<\/td>\n<td>!<\/td>\n<td>vera solo se a \u00e8 falsa<\/td>\n<td>!a<\/td>\n<\/tr>\n<\/table>\n<h4>Operatori relazionali<\/h4>\n<p>In C sono presenti anche tutti gli operatori relazionali:<\/p>\n<table>\n<tr>\n<td><strong>Significato<\/strong><\/td>\n<td><strong>Simbolo<\/strong><\/td>\n<td><strong>Esempio<\/strong><\/td>\n<tr>\n<tr>\n<td>minore a<\/td>\n<td><<\/td>\n<td>(a < b)<\/td>\n<tr>\n<tr>\n<td>minore o uguale a<\/td>\n<td><=<\/td>\n<td>(a <= b)<\/td>\n<tr>\n<tr>\n<td>maggiore di<\/td>\n<td>><\/td>\n<td>(a > b)<\/td>\n<tr>\n<tr>\n<td>maggiore o uguale a (1)<\/td>\n<td>>=<\/td>\n<td>(a >= b)<\/td>\n<tr>\n<tr>\n<td>uguale a<\/td>\n<td>==<\/td>\n<td>(a == b)<\/td>\n<tr>\n<tr>\n<td>diverso da<\/td>\n<td>!=<\/td>\n<td>(a != b)<\/td>\n<tr>\n<\/table>\n<p>(1) Attenzione a non confondere l&#8217;operatore di assegnazione (a = b) con l&#8217;operatore relazionale (a == b) il primo si usa per assegnare ad &#8220;a&#8221; lo stesso valore di &#8220;b&#8221;, mentre il secondo \u00e8 una funzione booleana che restituisce &#8220;true&#8221; se le due variabili sono uguali e &#8220;false&#8221; viceversa.<\/p>\n<p>Faremo qualche esempio concreto di utilizzo di operatori logici e relazionali nella prossima lezione, quando parleremo del controllo condizionale.<\/p>\n<h4>Il casting delle variabili<\/h4>\n<p>Ho deciso di inserire qui questo argomento perch\u00e9 \u00e8 pi\u00f9 facile da comprendere dopo aver fatto qualche esempio con le operazioni matematiche.<\/p>\n<p>Il <em>casting<\/em> \u00e8 il metodo per dire al compilatore C di trattare una variabile come se fosse di un tipo diverso. Il compilatore effettua questo cambio se questa cosa \u00e8 possibile, anche se in alcuni casi possono esserci perdite di informazione. Ad esempio \u00e8 possibile &#8220;castare&#8221; una variabile di tipo intero (int) in una di tipo (float) senza nessuna perdita di informazioni in quanto il tipo float \u00e8 pi\u00f9 grande del tipo int, il viceversa, invece, comporta perdita di informazione, in quanto il numero a virgola mobile viene &#8220;trocato&#8221; fino a diventare un intero.<\/p>\n<p>L&#8217;operazione di casting avviene inserendo il nome del tipo verso il quale effettuare il cast tra parentesi, prima del nome della variabile.<\/p>\n<p>Vediamo in questo esempio:<\/p>\n<pre lang=\"c\" line=\"1\" escaped=\"true\">\r\nfloat f = 5.25;\r\n\r\nint i = (int)f; \/\/cast esplicito da float a intero.\r\n<\/pre>\n<h4>La precedenza<\/h4>\n<p>Qualche utente pi\u00f9 smaliziato si sar\u00e0 reso conto che non ho parlato della precedenza degli operatori.<\/p>\n<p>Senza delle regole di precedenza operazioni come:<\/p>\n<p>risultato = (3 * 5 + 7);<\/p>\n<p>non sarebbero univocamente interpretabili, ecco quindi l&#8217;elenco degli operatori C in ordine decrescente di priorit\u00e0:<\/p>\n<table>\n<tr>\n<td><strong>Livello di precedenza<\/strong><\/td>\n<td><strong>Operatore<\/strong><\/td>\n<td><strong>Nome<\/strong><\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>!<\/td>\n<td>Not, negazione<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>*<\/td>\n<td>Moltiplicazione<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\/<\/td>\n<td>Divisione<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>%<\/td>\n<td>Modulo<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>+<\/td>\n<td>Addizione<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>&#8211;<\/td>\n<td>Sottrazione<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td><<\/td>\n<td>Minore<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td><=<\/td>\n<td>Minore uguale<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>><\/td>\n<td>Maggiore<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>>=<\/td>\n<td>Maggiore uguale<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>==<\/td>\n<td>Uguale (confronto)<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>!=<\/td>\n<td>Diverso<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>&#038;&#038;<\/td>\n<td>AND<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>||<\/td>\n<td>OR<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>=<\/td>\n<td>Assegnamento<\/td>\n<\/tr>\n<\/table>\n<p>In base a questa tabella l&#8217;istruzione precedente verr\u00e0 valutata com ((3 * 5) + 7).<\/p>\n<p>I motivi per cui non ho dato tanta importanza alle relazioni di precedenza sono principalmente due, il primo \u00e8 che per le operazioni matematiche di base valgono le stesse regole della matematica classica, prima moltiplicazioni e divisioni e poi sottrazioni e somme; Il secondo \u00e8 perch\u00e9 sono convinto (mi ha convinto Kernighan con il suo libro &#8220;The pratice of programming&#8221; (<a href=\"http:\/\/www.amazon.com\/Practice-Programming-Brian-W-Kernighan\/dp\/020161586X\" target=\"_blank\">link<\/a>) ) che il codice sorgente dei nostri programmi non deve essere soltanto corretto da un punto di vista sintattico, ma deve anche essere chiaro e comprensibile per l&#8217;uomo, quindi ove ci possano essere dei fraintendimenti del codice \u00e8 sicuramente pi\u00f9 corretto utilizzare una coppia in pi\u00f9 di parentesi cos\u00ec da rimuovere ogni ambiguit\u00e0.<\/p>\n<p>Alla prossima e buono studio!<\/p>\n<h4>Letture consigliate:<\/h4>\n<p><a href=\"http:\/\/www.amazon.it\/gp\/search\/ref=as_li_qf_sp_sr_il_tl?ie=UTF8&#038;keywords=887192200X&#038;tag=de0d-21&#038;index=aps&#038;linkCode=as2&#038;camp=3370&#038;creative=23322\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/C-Corso-Completo-di-Programmazione-kernighan-ritchie-devAPP.jpg\" alt=\"C-Corso-Completo-di-Programmazione-kernighan-ritchie-devAPP\" title=\"C-Corso-Completo-di-Programmazione-kernighan-ritchie-devAPP\" width=\"54\" height=\"75\" class=\"alignleft size-full wp-image-7803\" \/><\/a> <a href=\"http:\/\/www.amazon.it\/gp\/search\/ref=as_li_qf_sp_sr_il_tl?ie=UTF8&#038;keywords=887192200X&#038;tag=de0d-21&#038;index=aps&#038;linkCode=as2&#038;camp=3370&#038;creative=23322\" target=\"_blank\"><strong>Il linguaggio C. Principi di programmazione e manuale di riferimento (Accademica) <\/strong><\/a><br \/>\n<em>Brian W. Kernighan &#8211; Dennis M. Ritchie<\/em><br \/>\n<strong>Editore:<\/strong> Pearson | <strong>Lingua:<\/strong> Italiano | <strong>Brossura:<\/strong> 313 pagine<br \/>\n<strong>Prezzo Listino:<\/strong> <del datetime=\"2011-09-03T10:00:08+00:00\">EUR 27,00<\/del><br \/>\n<strong>Prezzo Promozione:<\/strong> EUR 22,95 con Spedizione gratuita<\/p>\n<p><a href=\"http:\/\/www.amazon.it\/gp\/product\/8850329547\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;tag=de0d-21&#038;linkCode=as2&#038;camp=3370&#038;creative=23322&#038;creativeASIN=8850329547\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/09\/C-Corso-Completo-di-Programmazione-Deitel-Deitel-devAPP.jpg\" alt=\"C-Corso-Completo-di-Programmazione-Deitel-Deitel-devAPP\" title=\"C-Corso-Completo-di-Programmazione-Deitel-Deitel-devAPP\" width=\"54\" height=\"75\" class=\"alignleft size-full wp-image-7550\" \/><\/a> <a href=\"http:\/\/www.amazon.it\/gp\/product\/8850329547\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;tag=de0d-21&#038;linkCode=as2&#038;camp=3370&#038;creative=23322&#038;creativeASIN=8850329547\" target=\"_blank\"><strong>C. Corso completo di programmazione<\/strong><\/a><br \/>\n<em>Paul J. Deitel &#8211; Harvey M. Deitel<\/em><br \/>\n<strong>Editore:<\/strong> Apogeo | <strong>Lingua:<\/strong> Italiano | <strong>Brossura:<\/strong> 640 pagine<br \/>\n<strong>Prezzo Listino:<\/strong> <del datetime=\"2011-09-03T10:00:08+00:00\">EUR 39,00<\/del><br \/>\n<strong>Prezzo Promozione:<\/strong> EUR 33,15 con Spedizione gratuita<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/supporto-applicazioni\/le-applicazioni-dei-nostri-autori\/parole-vietate-di-ignazio-calo\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/bannerIgnazioc.png\" alt=\"\" width=\"480\" height=\"100\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eccoci al settimo appuntamento con il nostro Corso Completo di Programmazione in C. Ora che abbiamo imparato&#8230;<\/p>\n","protected":false},"author":53,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[569],"tags":[690,593,588,241,688,687,689,686,685],"class_list":["post-6601","post","type-post","status-publish","format-standard","hentry","category-corso-completo-di-c","tag-casting-variabili-c","tag-corso-completo-di-c-2","tag-corso-di-c","tag-ignazio-calo","tag-operatori-logici-c","tag-operatori-matematici-c","tag-operatori-relazionali-c","tag-operazioni-logiche-c","tag-operazioni-matematiche-c"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/6601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=6601"}],"version-history":[{"count":9,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/6601\/revisions"}],"predecessor-version":[{"id":7811,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/6601\/revisions\/7811"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=6601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=6601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=6601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}