Sia dato il vettore: |3|12|9|21|4|
e sia i = 0.
Vi scrivo innanzitutto due esempi che dal punto di vista del risultato
combaciano perfettamente con quanto credo di avere capito.
1)vet[i++] = vet[i++] + 2;
-Alla sinistra dell'uguale abbiamo il post incremento,e pertanto
andremo innanzitutto a selezionare la cella vet[0].
-Anche alla destra dell'uguale abbiamo il post incremento,e pertanto
anche lì selezioneremo la cella vet[0].
Pertanto avremo:
vet[0] = vet[0] + 2 = 5.
Infine,tramite l'operatore di post incremento alla sinistra dell'uguale
avremo i = 1.
2)vet[i++] = vet[++i] + 2;
-Alla sinistra dell'uguale abbiamo il post incremento,e pertanto
andremo innanzitutto a selezionare la cella vet[0].
-Alla destra dell'uguale abbiamo invece il pre incremento,e quindi
selezioneremo la cella vet[1].
Pertanto avremo:
vet[0] = vet[1] + 2 = 14.
Infine,tramite l'operatore di post incremento alla sinistra dell'uguale
avremo i = 1.
In definitiva,credo che il pre incremento ed il post incremento alla destra dell'uguale,
servono solamente per selezionare la cella giusta,senza provocare nessun
incremento sulla i.
PROBLEMA
Data l'istruzione vet[++i] = vet[i++] + 2;
non riesco a capire come mai al termine della medesima avrò i = 2.
Dal punto di vista del vettore di output anche in questo caso i
conti tornano.
Quindi il problema sembra che nasca dal preincremento sulla i,posto
alla sinistra dell'uguale:come può essere che avvenga due volte?
Ciao a tutti e ringrazio anticipatamente per una eventuale risposta.