Sei sulla pagina 1di 21

Operatori di pre-incremento e di

post-incremento
Claudio Ciccotelli
Operatore di incremento ++

• L’operatore di incremento (++) applicato ad una


variabile ha l’effetto di incrementarne il valore di 1.

x++;

• Forme equivalenti:

x = x + 1;

x += 1;

Pagina 2
Pre- e Post-incremento

• Esistono due forme di incremento:

• Pre-incremento: l’operatore è prefisso alla


viariabile

++x;

• Post-incremento: l’operatore è postfisso alla


variabile

x++;

Pagina 3
Pre- e Post-incremento

• Entrambe le forme hanno l’effetto di incrementare la


variabile di 1 (proprio come ‘x = x + 1’ e
‘x += 1’).

• La differenza sta nel valore che assumono quando


vengono usate in un’espressione.

• Es.:
int x = 1;
int y = 3 * ++x;
int z = 5 * y++;

Pagina 4
Pre- e Post-incremento in espressioni

• Pre-incremento: In un espressione ++x assume il


valore di x dopo l’incremento (quindi vale x+1).
Equivale a:
1. Incrementare x
2. Usare x nell’espressione

• Post-incremento: In un espressione x++ assume


il valore di x prima dell’incremento (quindi vale x).
Equivale a:
1. Usare x nell’espressione
2. Incrementare x

Pagina 5
Pre-incremento in espressioni

• Pre-incemento: In un espressione ++x assume il


valore di x dopo l’incremento (quindi vale x+1).
Equivale a:
1. Incrementare x
2. Usare x nell’espressione

x = x + 1;
int y = 3 * ++x;
int y = 3 * x;

Pagina 6
Post-incremento in espressioni

• Post-incemento: In un espressione x++ assume il


valore di x prima dell’incremento (quindi vale x).
Equivale a:
1. Usare x nell’espressione
2. Incrementare x

int y = 3 * x;
int y = 3 * x++;
x = x + 1;

Pagina 7
Esempio

int x = 1, y = 1; Cosa stampa


il programma?
int w = 3 * x++;
int z = 3 * ++y;

printf("w = %d\n", w);


printf("z = %d\n", z);

Pagina 8
Esempio Cosa stampa
il programma?

int x = 1, y = 1;

int w = 3 * x++;
int z = 3 * ++y;

printf("w = %d\n", w);


printf("z = %d\n", z);

Pagina 9
Esempio Cosa stampa
il programma?

int x = 1, y = 1; int w = 3 * x;
x = x + 1;
int w = 3 * x++;
int z = 3 * ++y;

printf("w = %d\n", w);


printf("z = %d\n", z);

Pagina 10
Esempio Cosa stampa
il programma?

int x = 1, y = 1; int w = 3 * x;
x = x + 1;
int w = 3 * x++;
int z = 3 * ++y;

printf("w = %d\n", w);


printf("z = %d\n", z);

Pagina 11
Esempio Cosa stampa
il programma?

int x = 1, y = 1; int w = 3 * x;
x = x + 1;
int w = 3 * x++;
int z = 3 * ++y; y = y + 1;
int z = 3 * y;

printf("w = %d\n", w);


printf("z = %d\n", z);

Pagina 12
Esempio Cosa stampa
il programma?

int x = 1, y = 1; int w = 3 * x;
x = x + 1;
int w = 3 * x++;
int z = 3 * ++y; y = y + 1;
int z = 3 * y;

printf("w = %d\n", w); // stampa w = 3


printf("z = %d\n", z); // stampa z = 6
// sia x che y sono state incrementate
// quindi valgono 2
Pagina 13
Pre- e Post-decremento --

• L’operatore di decremento (--) come quello di


incremento ha due forme

• Pre-decremento: --x;

• Post-decremento: x--;

• Ha l’effetto di decrementare di 1 la variabile su cui


viene applicato (come ‘x = x – 1’ e ‘x -= 1’).

Pagina 14
Pre- e Post-decremento in espressioni

• Pre-decremento: In un espressione --x assume il


valore di x dopo il decremento (quindi vale x-1).
Equivale a:
1. Decrementare x
2. Usare x nell’espressione

• Post-decremento: In un espressione x-- assume


il valore di x prima del decremento (quindi vale x).
Equivale a:
1. Usare x nell’espressione
2. Decrementare x

Pagina 15
Esempio

int x = 3, y = 1;

Cosa stampa
int w = 3 * --x;
il programma?
int z = (3 * ++y) + x--;

printf("w = %d\n", w);


printf("z = %d\n", z);
printf("x = %d\n", x);
printf("y = %d\n", y);

Pagina 16
Cosa stampa
Esempio
il programma?
int x = 3, y = 1;

int w = 3 * --x;
int z = (3 * ++y) + x--;

printf("w = %d\n", w);


printf("z = %d\n", z);
printf("x = %d\n", x);
printf("y = %d\n", y);

Pagina 17
Cosa stampa
Esempio
il programma?
int x = 3, y = 1; x = x – 1;
int w = 3 * x;
int w = 3 * --x;
int z = (3 * ++y) + x--;

printf("w = %d\n", w);


printf("z = %d\n", z);
printf("x = %d\n", x);
printf("y = %d\n", y);

Pagina 18
Cosa stampa
Esempio
il programma?
int x = 3, y = 1; x = x – 1;
int w = 3 * x;
int w = 3 * --x;
int z = (3 * ++y) + x--;

printf("w = %d\n", w);


printf("z = %d\n", z);
printf("x = %d\n", x);
printf("y = %d\n", y);

Pagina 19
Cosa stampa
Esempio
il programma?
int x = 3, y = 1; x = x – 1;
int w = 3 * x;
int w = 3 * --x;
y = y + 1;
int z = (3 * ++y) + x--;
int z = (3 * y) + x;
X = x – 1;

printf("w = %d\n", w);


printf("z = %d\n", z);
printf("x = %d\n", x);
printf("y = %d\n", y);

Pagina 20
Cosa stampa
Esempio
il programma?
int x = 3, y = 1; x = x – 1;
int w = 3 * x;
int w = 3 * --x;
y = y + 1;
int z = (3 * ++y) + x--;
int z = (3 * y) + x;
X = x – 1;

printf("w = %d\n", w); // stampa w = 6


printf("z = %d\n", z); // stampa z = 8
printf("x = %d\n", x); // stampa x = 1
printf("y = %d\n", y); // stampa y = 2

Pagina 21