01: // operatori di incremento/decremento prefissi e postfissi
02: #include<stdio.h>
03: #include<stdlib.h>
04: 
05: int main(int argc, char **argv){
06: 
07:   int m = 66, n;
08: 
09:   n = ++m; // l'operatore e' prefisso: prima eseguo incremento, poi rendo disponibile valore per il resto delle operazioni (in questo caso l'assegnamento a n)
10:   printf("m = %d, n= %d\n", m, n);
11: 
12: 
13:   n = m++; // l'operatore e' postfisso: prime rendo disponibile valore per il resto delle operazioni (in questo caso l'assegnamento a n) e solo dopo eseguo l'incremento
14:   printf("m = %d, n= %d\n", m, n);
15: 
16: 
17:   printf("m++ = %d\n", m++);
18:   printf("m   = %d\n", m);
19:   printf("++m = %d\n", ++m);
20: 
21:   getchar();
22: 
23:   m = m++; // FIXME risultato potenzialmente non definito!
24:   printf("m   = %d\n", m);
25: 
26:   n = m++ + m++; // FIXME come sopra!
27:   printf("n   = %d\n", n);
28: 
29:   // n = ++m++;  FIXME non compila, perche'? Ma perche' solo un lvalue puo' essere incrementato...
30:   // printf("n   = %d\n", n);
31: 
32:   return 0;
33: }
34: 
35: /*
36: m = 67, n= 67
37: m = 68, n= 67
38: m++ = 68
39: m   = 69
40: ++m = 70
41: m   = 70
42: n   = 141
43: */
44: 


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