• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Info Gli operatori di incremento e decremento

gedamial

Utente Senior
Autore del topic
9 Giugno 2010
1.937
69
Miglior risposta
0
Salve.

Volevo aprire una breve (forse) parentesi riguardo l'incremento e il decremento di un valore in C/C++
Come tutti noi sappiamo, avendo dichiarato una variabile x, possiamo incrementarne o decrementarne il valore:

Incremento: x++ oppure ++x
Decremento: x-- oppure --x

Quello che non tutti sanno è che, a sua volta, gli operatori di incremento e di decremento si dividono in altri due nominativi:

Preincremento (++x) | Postincremento (x++)
Predecremento (--x) | Postdecremento (x--)

Nel preincremento e nel predecremento, il segno + e il segno - sono posti prima della variabile sulla quale agiscono.
Nel postdecremento e nel postincremento, il segno + e il segno - sono posti dopo la variabile sulla quale agiscono.

Qual è la differenza?
Ebbene, dipende.

Entrambe le espressioni sono valide e forniscono lo stesso risultato. La differenza viene a crearsi quando quegli stessi operatori vengono usati in espressioni più o meno complesse.
Supponiamo, ancora una volta, di avere due variabili x e y con valore 0.

x = ++y;

Il valore che viene assegnato a x è ora uguale a 1. Questo perché abbiamo usato il preincremento dove la variabile viene incrementata prima che il suo valore venga utilizzato nell'espressione.

Se, invece, utilizziamo l'operatore di postincremento avviene il contrario:

x = y++;

Qui, la variabile y viene incrementata dopo che il suo valore è stato assegnato a x


Spero che vi sia stato utile per capire la differenza, qualora non vi fosse stata detta.

:bye:
 
Ultima modifica:
Ti ringrazio per aver condiviso con noi le tue conoscenze.

Comunque, non esistono solo in C e C++, ci sono moltissimi altri linguaggi che permettono queste scorciatoie. ;)
 
Credo che si faccia prima a contare il numero di linguaggi di programmazione che non le usano che il contrario lol.

Comunque good, ed aggiungerei per il caso specifico del C:

Quando si va ad effettuare un printf di un indice, se si vuole stampare il valore seguente, senza modificare la variabile, si utilizza i+1 e non ++i, perché i+1 verrà usato per la stampa e basta, non verrà modificata la variabile, mentre con ++i il valore verrà modificato dopo la stampa.