Incremento del for

di il
6 risposte

Incremento del for

Ciao! forse è una domanda banale, ma volevo sapere la differenza tra 2 cicli for

for(i=0;i<n;i++)
e

for(i=0;i<n;++i)
fare i++ o ++i nell'incremento del for cosa cambia?

Grazie

6 Risposte

  • Re: Incremento del for

    Guarda qui:
    http://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and-i
  • Re: Incremento del for

    In parole povere :

    i++ = usa e poi incrementa (post incremento)
    ++i = incrementa e poi usa (preincremento)

    in linea di massima sono equivalenti, ma se quella i non è solo un contatore , potrebbe esserci una bella differenza tra usare la variabile i incrementandola prima o dopo averla usata... ...
  • Re: Incremento del for

    Quindi sarebbe un po come far partire il for da i=1 e poi fare i++ giusto?
  • Re: Incremento del for

    No, nel ciclo for come l'hai impostato tu sono equivalenti... in entrambi i casi "i" parte da 0, controlla la condizione, esegue il ciclo e poi viene incrementata (c'è la spiegazione anche nel link citato, seconda risposta).
  • Re: Incremento del for

    Allora

    come contatore in un ciclo for ++i e i++ sono equivalenti, ma in generale le due formulazioni non sono equivalenti prova a far girare questo programma e vedi la differenza :
    
    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
    	int i ;
    	int z = 0;
    	int x ;
    	int y ;
    	
    	printf ("Preincremento i :\n") ;
    	
    	for ( i = 0 ; i <= 10 ; ++i) {
    		
    		printf("%d ", i ) ;
    		
    	}
    	
    	printf ("\n\n") ;
    	
    	printf ("Postincremento i :\n") ;
    	
    	for ( i = 0 ; i <= 10 ; i++) {
    		
    		printf("%d ", i ) ;
    		
    		
    	}
    	
    		
    	printf ("\nPreincremento z :\n") ;
    	
    	for ( i = 0 ; i <= 10 ; i++) {
    		
    		x = ++z ;
    		
    		printf("z = %d e x = %d\n ",  z , x ) ;
    		
    		
    	}
    	printf ("\n") ;
    	z = 0 ; 
    
    	printf ("\nPostincremento z :\n") ;
    	
    	for ( i = 0 ; i <= 10 ; i++) {
    		
    	
    		y = z++ ;
    		printf("z = %d e y = %d\n ",  z , y) ;
    		
    	}
    	
    	
    	printf ("\n\n") ;
    	return 0;
    }
    
    come vedrai i come contatore rimane uguale sia nel pre che ne post incremento.

    ma se lo mettiamo all'interno di una qualche espressione la differenza è "notevole" :

    Preincremento i :
    0 1 2 3 4 5 6 7 8 9 10

    Postincremento i :
    0 1 2 3 4 5 6 7 8 9 10
    Preincremento z :
    z = 1 e x = 1
    z = 2 e x = 2
    z = 3 e x = 3
    z = 4 e x = 4
    z = 5 e x = 5
    z = 6 e x = 6
    z = 7 e x = 7
    z = 8 e x = 8
    z = 9 e x = 9
    z = 10 e x = 10
    z = 11 e x = 11


    Postincremento z :
    z = 1 e y = 0
    z = 2 e y = 1
    z = 3 e y = 2
    z = 4 e y = 3
    z = 5 e y = 4
    z = 6 e y = 5
    z = 7 e y = 6
    z = 8 e y = 7
    z = 9 e y = 8
    z = 10 e y = 9
    z = 11 e y = 10
  • Re: Incremento del for

    Ho capito!!! Grazie!
Devi accedere o registrarti per scrivere nel forum
6 risposte