| 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 |
Indice linguaggio C