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:   m = m++; // FIXME risultato potenzialmente non definito!
22:   printf("m   = %d\n", m);
23: 
24:   n = m++ + m++; // FIXME come sopra!
25:   printf("n   = %d\n", n);
26: 
27:   // n = ++m++;  FIXME non compila, perche'? Ma perche' solo un lvalue puo' essere incrementato...
28:   // printf("n   = %d\n", n);
29: 
30:   return 0;
31: }
32: 
33: /*
34: m = 67, n= 67
35: m = 68, n= 67
36: m++ = 68
37: m   = 69
38: ++m = 70
39: m   = 70
40: n   = 141
41: */
42: 


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