Linguaggio C per MSX
Rubrica a cura di Nicola Brogelli (Parte 2)
Conversioni di Tipo
Come abbiamo visto nella dispensa precedente, in C ogni dato ha un Tipo ben definito. Quando in una espressione compaiono variabili di tipo diverso, spesso il compilatore è in grado di gestire senza l’intervento del programmatore la conversione tra i tipi. In altri casi invece è richiesto che la conversione sia eseguita in modo esplicito dal programmatore. Un fattore da tenere presente, quando si parla di conversioni, è che non sempre una conversione di tipo preserva il valore: ad esempio nella conversione da float a int in generale si riscontra una perdita di precisione, perché la rappresentazione adottata per gli interi è inferiore con quella adottata per i reali. Da questo punto di vista si può distinguere tra conversione di tipo con perdita di informazione e conversione di tipo senza perdita di informazione. In particolare in quest’ultimo caso si parla di promozione di tipo e avviene quando ad esempio una espressione un tipo int viene promosso a reale.
Conversioni implicite
Quando un’espressione del tipo x op y coinvolge operandi di tipo diverso, avviene una conversione implicita secondo le seguenti regole:
- quando in una espressione sono in gioco gli interi e i reali, gli operandi sono sempre convertiti a quello di lunghezza maggiore.
- se una espressione aritmetica viene assegnata ad una variabile di tipo intero o reale, il risultato dell’espressione viene convertito al tipo di variabile.
- Un tipo char o una enumerazione (vedremo in seguito) possono essere utilizzati ovunque si richieda l’utilizzo di un tipo intero.
int r = 0;
float a = 10.25;
float b = 3.11;
r = a + b; // Il risultato di r = 13
Conversioni esplicite
Questo tipo di conversione è a carico del programmatore, il quale richiede in modo esplicito di convertire un valore da un tipo ad un altro. L’operazione di conversione, anche definita come cast consiste nel nome del tipo della variabile a cui si deve effettuare la conversione, scritto fra parentesi tonde e posto davanti al valore o alla variabile da convertire.
int i = (int) 3.14;
float p = 3.14;
int i = (int)p; In entrambi i casi il valore di i sarà 3.
Se il contenuto ti ha soddisfatto qui trovi la terza dispensa.
Per chi fosse interessato l’Associazione MSX Italia ha creato un gruppo di lavoro di Ricerca e sviluppo sulla programmazione C per MSX. Per maggiori info: associazioneMSXitalia@gmail.com




0 commenti