01: // conversioni implicite o automatiche
02: #include<stdio.h>
03: #include<stdlib.h>
04: #include<limits.h>
05: 
06: int main(int argc, char **argv){
07: 
08:   float ris;
09:   unsigned int a = 42;
10:   long b = 17;
11:   short c = 1;
12: 
13:   ris = a/b + c; 
14: 
15:   // a e' unsigned int mentre b e' long e c e' short
16:   // conversioni implicite nell'ordine:
17:   //  1. c viene convertito automaticamente in int
18:   //  2. devo calcolare a/b ma a e b tipi differenti, converto nel tipo di ordine maggiore ovvero converto a in long ed effettuo il calcolo
19:   //  3. il risultato di a/b e', dopo le conversioni, di tipo long devo calcolare somma con c che era stato convertito in int. Ai fini del calcolo converto c in long
20:   //  4. conversione di assegnamento, converto il risultato in float 
21: 
22:   printf("Il risultato di %d/%ld+%d e' %f\n", a, b, c, ris); // OUTPUT: Il risultato di 42/17+1 e' 3.000000 XXX come mai?
23: 
24:   return 0;
25: }
26: 
27: 


Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it