*
* Abbiamo visto come dichiarare, modificare e stampare variabili numeriche
* di tipo intero (INT). Ora vediamo di fare un po' piu' di pratica.
* Innanzitutto si puo' dichiarare piu' di 1 variabile alla volta, se
* queste sono dello stesso tipo. Per dichiarare 2 variabili di tipo intero
* in un solo colpo, ad esempio, basta fare:
*
* int pluto, pippo;
*
* Ossia mettere la lista delle variabili INT da dichiarare, separate da
* una virgola, terminando con il consueto punto e virgola.
* Allo stesso modo, se si vogliono dichiarare piu' variabili di tipo FLOAT:
*
* float topo, papero;
*
* Naturalmente si potrebbero dichiarare singolarmente, se si vuole.
* Allo stesso modo, si possono stampare valori di piu' variabili con una
* sola funzione printf(). Per stampare delle variabili numeriche
* abbiamo gia' visto che occorre mettere un %d o %f nel punto del
* testo che ci interessa, e mettere poi il nome della variabile
* dopo la stringa. Per stampare piu' di una variabile si fa cosi':
*
* printf("Pluto = %d , Pippo = %d\n", pluto, pippo);
*
* Ossia si mettono i %d dove ci interessa, e poi la lista delle variabili
* che li sostituiranno nello stesso ordine, separate da virgole.
* Ecco una tabella riassuntiva dei tipi di dati definibili:
*
* Tipo | Lungh. | Range (valori minimi e massimi)
* ---------------+---------+----------------------------------------------
* unsigned char | 8 bits | 0 fino 255
* char | 8 bits | -128 "" 127
* unsigned int | 16 bits | 0 "" 65,535
* short int | 16 bits | -32,768 "" 32,767
* int | 16 bits | -32,768 "" 32,767
* unsigned long | 32 bits | 0 "" 4,294,967,295
* long | 32 bits | -2,147,483,648 "" 2,147,483,647
* float | 32 bits | 3.4 * (10**-38) "" 3.4 * (10**+38)
* double | 64 bits | 1.7 * (10**-308) "" 1.7 * (10**+308)
* long double | 80 bits | 3.4 * (10**-4932) "" 1.1 * (10**+4932)
*
* Come si vede i tipi interi (char,int,long) possono essere unsigned, ossia
* solo positivi, in questo modo contengono il doppio di valori positivi,
* risparmiandosi di supportare quelli negativi. I tipi a virgola mobile,
* ossia float, double e long double, sono comunque signed.
* Se si va fuori del raggio di azione di una variabile, ad esempio se si
* aggiunge 100 ad una variabile int che vale gia' 32700, il risultato
* e' -32736! Questo per l'aritmetica in complemento a 2, che per
* semplificare fa "ricominciare" dal numero piu' basso quando si supera
* quello piu' alto... dato che non e' segnalato alcun errore e il
* risultato erroneo puo' essere usato, ATTENTI A NON FAR ECCEDERE MAI I
* TIPI, piuttosto definite dei long, se sospettate un int non basti.
* Ricordandoci che %d si usa per stampare una variabile INT, mentre %f si
* usa per stampare una variabile float, ecco un esempio pratico:
*/
#include <stdio.h> /* Includiamo la libreria standard */
int pluto, pippo; /* Dichiaro 2 variabili di tipo intero */
float topo, papero; /* Dichiaro 2 variabili di tipo float */
main() /* Funzione principale, eseguita per prima */
{ /* Inizio della funzione main() */
pluto = 1000; /* Assegno a pluto il valore 1000 */
pippo = pluto + 500; /* Assegno a pippo il valore di pluto + 500 */
topo = 21.06; /* Assegno a topo il valore 21,06 */
papero = 3.1415; /* Assegno a papero il valore 3.1415 */
/* Stampo il valore di 2 variabili di tipo INT con un solo printf() */
printf("Pluto = %d , Pippo = %d\n", pluto, pippo);
/* Stampo il valore di 2 variabili di tipo FLOAT con un solo printf() */
printf("Topo = %f , Papero = %f\n", topo, papero);
/* Stampo il valore di tutte le 4 variabili con un solo printf() */
printf("Pluto=%d ,Pippo=%d ,Topo=%f ,Papero=%f\n",pluto,pippo,topo,papero);
} /* Fine della funzione main() */
/* Ci sono un paio di cose da notare.
* La prima e' che abbiamo assegnato il valore 1500 a pippo in questo modo:
*
* pippo = pluto + 500;
*
* Abbiamo cioe' ottenuto un valore sommando una variabile con un numero.
* Ovviamente e' possibile inserire nelle espressioni numeri e variabili.
* Gli operatori aritmetici fondamentali sono:
*
* + addizione
* - sottrazione
* * moltiplicazione
* / divisione
* % modulo (il resto di una divisione intera)
*
* Naturalmente si possono usare le parentesi per costituire espressioni,
* ad esempio:
*
* pippo = (topo-30+pluto*(pippo+papero))/(pluto*5);
*
* Come si vede vanno usate solo le parentesi tonde per evidenziare le
* precedenze dell'espressione. Le parentesi quadre e graffe infatti sono
* usate per altri scopi, come l'indicizzazione degli array e la definizione
* di inizio e fine di una funzione.
* Il C ha molti altri operatori speciali (+=, -=, *=, /=, ++,...), ma li
* vedremo piu' avanti.
*
*/
