Problema con i vettori

di il
1 risposte

Problema con i vettori

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.

1 Risposte

  • Re: Problema con i vettori

    
    vet[++i] = vet[i++] + 2; 
    
    è undefined in C quindi non si dovrebbe usare perche sono operazioni a discrezione del compilatore.
Devi accedere o registrarti per scrivere nel forum
1 risposte