Na czym polega różnica w inkrementacji w pętli for skoro wyniki są takie same? Mogę prosić o wyjaśnienie?
for(int s=0; s<3; s++ ){
System.out.println(s);
}
for(int a=0; a<3;++a){
System.out.println(a);
}
Operator inkrementacji (rzeczywiście formalnie różny) jest w "czystym" kontekście (tj nie jest jednocześnie użyty jako wartość), więc nie ma różnicy efektu
Zrób tak:
int s = 0, a = 0;
for(int i=0; i<3; ++i ){
System.out.println(s++);
}
System.out.println();
for(int i=0; i<3;++i){
System.out.println(++a);
}
To Zobaczysz różnicę, w pierwszym przypadku jest post inkrementacja, a w drugim pre.
Tym bardziej jest dla mnie niezrozumiałe po co używać for(int i=0; i<3; ++i ) skoro można użyć for(int i=0; i<3; i++ ) i efekt jest ten sam?
Zobacz tu: https://stackoverflow.com/questions/2371118/how-do-the-post-increment-i-and-pre-increment-i-operators-work-in-java#2371162 .
Efekt jest ten sam, po wykonaniu ++i
, lub i++
, w następnej linijce i
ma taką samą wartość, ale jeśli Używasz, tych ++i
i i++
w wyrażeniach, to mają inne wartości (w momencie użycia).
luki25591 napisał(a):
Tym bardziej jest dla mnie niezrozumiałe po co używać for(int i=0; i<3; ++i ) skoro można użyć for(int i=0; i<3; i++ ) i efekt jest ten sam?
W pętli może i wyniki są takie same, ale ogólnie to wyrażenie "++i" najpierw inkrementuję zmienną "i", a potem jej używa, natomiast wyrażenie "i++" najpierw używa zmienną "i", dopiero potem ją inkrementuję.
Czyli rozumiem, że w pętli nie ma znaczenia czy użyję inkrementacji czy post inkrementacji. Dopiero w wyrażeniu ma znaczenie?
Dzięki za wyjaśnienie. Pozdrawiam.