Il casting nel linguaggio C
Cos'è il casting?
Il casting è la conversione di un tipo di dati in un altro. Mi permette di convertire i valori da un tipo a un altro in modo implicito o esplicito.
- Casting implicito
E' la conversione automatica del tipo di dato da parte del compilatore C. Si verifica quando le variabili (operandi) dell'espressione sono dello stesso tipo. - Casting esplicito
In questo caso la conversione è definita dal programmatore che indica, in modo esplicito tra parentesi tonde, in quale formato dati deve essere il risultato nell'espressione.(formato) espressione
Questo operatore è detto operatore di cast.
Un esempio pratico
Esempio casting implicito
Questo programma calcola la media aritmetica tra due variabili intere: a=17 e b=5.
#include <stdio.h>
main() {
int a = 5, b = 4;
float c;
c = (a+b)/2;
printf("La media è : %f", c );
}
Il risultato dell'espressione (a+b)/2 viene registrato nella variabile c.
Malgrado la variabile c sia float (virgola mobile), il risultato è un numero intero perché è calcolato con il casting implicito tra due numeri interi.
La media è 4.000000
Il programma non è andato in errore durante l'esecuzione ma si è perso un'informazione significativa.
Esempio casting esplicito
Per avere il risultato dell'espressione in virgola mobile devo ricorrere al casting esplicito.
Prima dell'espressione (a+b)/2 aggiungo l'operatore di cast (float).
#include <stdio.h>
main() {
int a = 5, b = 4;
float c;
c = (float) (a+b)/2;
printf("La media è : %f", c );
}
In pratica, con il casting esplicito sto dicendo al programma di calcolare il risultato dell'espressione in virgola mobile (float).
Eseguo il programma e il risultato è
La media è 4.500000
Senza aver modificato il formato intero delle variabili operandi a e b, il risultato finale dell'espressione è un numero reale in virgola mobile.
E così via.