*
 * 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 	/* 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.
 *
*/