View Full Version : [C] Che differenza c'è tra "++i" e "i++"?!
Matrixbob
24-04-2007, 09:17
Non dovrebbe essere proprio la stessa cosa, magari come side effect a volte lo è, ma non mi pare sia la stessa cosa.
Ad esempio se ho "i++" in 1 test significa che prima valuta i nel test e dopo lo incrementa, mentre se avesse "++i" nel test allora prima incrementa i e poi lo valuta nel test?!
:mc:
Non dovrebbe essere proprio la stessa cosa, magari come side effect a volte lo è, ma non mi pare sia la stessa cosa.
Ad esempio se ho "i++" in 1 test significa che prima valuta i el test e dopo lo incrementa, mentre se avesse "++i" nel test allora prima lo incrementa e poi valuta i?!
:mc:
:mano: Proprio come hai detto! :)
Matrixbob
24-04-2007, 10:36
:mano: Proprio come hai detto! :)
Ho editato, forse adesso è + precisa la mia definizione.
Ma quindi la differenza sta solo nei test?
Tutto li?
Ziosilvio
24-04-2007, 10:39
In entrambi i casi il valore della variabile i viene incrementato di uno.
Il valora dell'espressione, invece, corrisponde al vecchio valore di i nel caso di i++, e al nuovo valore di i nel caso di ++i.
Ovviamente, gli operatori di decremento i-- e --i si comportano in modo simile.
C'è questa differenza:
i = 1;
a = i++; <--- a == 1
i = 1
a = ++i; <--- a == 2
Matrixbob
24-04-2007, 10:50
C'è questa differenza:
i = 1;
a = i++; <--- a == 1
i = 1
a = ++i; <--- a == 2
Ma se in 1 ciclo While devo incremetare un indice allora fare ++i o i++ non fa differenza vero?!
Se scrivi cosi:
++i;
o
i++;
Non fa alcuna differenza...c'è la diffusa credenza che ++i sia più performante vedendo la traduzione assembler...ma credo che con i moderni compilatori e le moderne frequenze delle CPU la differenza sia impercettibile...
Matrixbob
24-04-2007, 11:38
Se scrivi cosi:
++i;
o
i++;
Non fa alcuna differenza...c'è la diffusa credenza che ++i sia più performante vedendo la traduzione assembler...ma credo che con i moderni compilatori e le moderne frequenze delle CPU la differenza sia impercettibile...
Ma poi i compilatori ormai hanno tecniche di ottimizzazione del codice mi pare.
Magari vengono tradotti entrambi nella stessa cosa IMHO.
Magari vengono tradotti entrambi nella stessa cosa IMHO.
L'incremento su linea singola probabilmente sì ;)
wingman87
24-04-2007, 13:15
Ma se in 1 ciclo While devo incremetare un indice allora fare ++i o i++ non fa differenza vero?!
se i è la variabile di controllo e usi ++i nel controllo tipo:
while(++i<n)
allora il ciclo viene eseguito una volta di meno rispetto a se usi
while(i++<n)
Matrixbob
24-04-2007, 18:47
se i è la variabile di controllo e usi ++i nel controllo tipo:
while(++i<n)
allora il ciclo viene eseguito una volta di meno rispetto a se usi
while(i++<n)
Si infatti è come dicevamo noi sopra.
i++ prima viene valutata i e poi viene incrementata.
Isolata invece è =.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.