Conversioni di tipo implicite | |
Conversioni di tipo esplicite (casting) |
Le conversioni di tipo hano luogo quando si definiscono 2 variabili di tipologia differente e si eseguono assegnamenti fra loro (es.: si assegna ad una variabile float, un valore risultante da una espressione fra int), oppure sono facenti parte della stessa espressione (es.: somma di un operando float con un operando int).
Esempio:
... int a = 10; float b, c; b = a; / b e' float, a e' int */ ... b = 5.0; c = a*b; /* moltiplicazione fra due operandi di tipo differente */
Se uno degli operandi e' long double, l'altro viene convertito in un long double. | |||||||||||
Altrimenti, se uno degli operandi e' double, l'altro viene convertito in un double. | |||||||||||
Altrimenti, se uno degli operandi e' float, l'altro viene convertito in un float. | |||||||||||
Altrimenti su entrambi gli operandi viene eseguita la
trasformazione degli interi:
|
Nel caso di assegnamento ad una variabile del risultato di una espressione
(il cui tipo e' determinato dalle regole sopra riportate), sono possibili
alcune conversioni di seguito riportate:
[vedi "Fondamenti di Informatica II"
di G.Bellavia, A.Corradi, L.Leonardi]
char | -> | int, short int, long int | |
int | -> | char (possibilita' di troncamento), short int (possibilita' di troncamento), long int, float, double, unsigned int | |
short int | -> | char (possibilita' di troncamento), int, long int, float, double, unsigned int | |
long int | -> | char (possibilita' di troncamento), short int (possibilita' di troncamento), int (possibilita' di troncamento), float, double, unsigned int | |
float | -> | short int (possibilita' di overflow), int (possibilita' di overflow), long int (possibilita' di overflow), double | |
double | -> | short int (possibilita' di overflow), int (possibilita' di overflow), long int (possibilita' di overflow), float |