Pré-incremento e Pós-incremento - em um FOR

9 respostas
J

Pessoal qual a diferença na prática de usar no for operador ++i ou i++, fiz um exemplo e não vir diferença

for(int i = 1; i<=3; i++){
			System.out.println(i);
		}
for(int i = 1; i<=3; ++i){
			System.out.println(i);
		}

O resultado é o mesmo

9 Respostas

Rodrigo_Sasaki

Rode esses 2 métodos e veja se percebe a diferença:public static void preIncremento(){ int i = 10; System.out.println(++i); System.out.println(i); }public static void posIncremento(){ int i = 10; System.out.println(i++); System.out.println(i); }

J

Esse da diferença, o que estou dizendo é que no for me parecer que isso não faz diferença entende ?

tanto faz você colocar i++ ou i++ = é como se isso não tivesse valendo para o for

entende ?

Rodrigo_Sasaki

No for não vai ter diferença nenhuma, a não ser que você realize alguma operação no terceiro argumento do laço.

J

Como assim realizar operação, poderia me explicar ?

Rodrigo_Sasaki
public static void main(String[] args){
	int contador = 0;
	for(int i = 0 ; i < 10 ; contador = i++){
		
	}
	System.out.println(contador);
}
Algo como o exemplo acima. Se você alterar para pré-incremento, aí terá uma alteração no valor final.

Não consigo pensar em um exemplo prático para isso, mas é só naquele bloco de código do for que fará diferença o incremento ser pré ou pós.

J
Rodrigo Sasaki:
public static void main(String[] args){
	int contador = 0;
	for(int i = 0 ; i < 10 ; contador = i++){
		
	}
	System.out.println(contador);
}
Algo como o exemplo acima. Se você alterar para pré-incremento, aí terá uma alteração no valor final.

Não consigo pensar em um exemplo prático para isso, mas é só naquele bloco de código do for que fará diferença o incremento ser pré ou pós.

É verdade, acho q é só naquele exato momento ali

A

a questão e simples na verdade,

o pre-incremento executa o o incremento antes da linhas, o pos-descremento o faz ao final;

int x = 5;


 System.out.println(x++);
//vai mostrar 5, porque ira imprimir antes de incrementar
// no entando apos essa linha o valor de x ja será 6


 System.out.println(++x);
//vai mostrar 7, porque era incrementar antes de imprimir

percebeu a diferenca?
existem alguns calculos que isso pode realmente fazer a diferenca

C

Salve,

Cara eu não sei se sua duvida é refente ao pós e pre incremento ou o laço for.
no laço for de fato não ira ter qualquer diferença você utilizar pós e pre incremento como disse o Rodrigo Sasaki,
Eu também não sei se você conhece o laço for mas ele não é divido em:
for(inicialização de variável; teste da variável; incremento da variável) como é o comum utilizar
o for é dividido em
for(operação executada ao inicio do for; operação que retorna um booleano para continuação do laço; operação executada a cada instrução do laço)
eu sei que parece que eu estou só falando o que você já sabe mas a diferença na pratica é a seguinte:
O uso comum do for é:

Uma forma incomum mas valida é:

int i = 0;
for(System.out.println("Inicio do laco");i&lt;=10;System.out.printf("Executando laco: %d\n",i++))

Neste segundo caso acontece o que o Rodrigo Sasaki havia dito de executar alguma operação com o terceiro argumento

Espero ter ajudado Abraço

E

Uma forma muito boa de você entender o que acontece, sem precisar de decorar, é aprender que o loop “for” é na verdade uma abreviação de um “while”. Se aprender isso, vai ver que é trivial entender por que é que, nesse caso, tanto faz usar “i++” ou “++i” que o resultado vai ser exatamente o mesmo.
O seguinte laço “for”:

for (A ; B; C) {
    D;
    E;
}

equivale ao seguinte laço “while”:

{
    A;
    while (B) {
        D;
        E;
        C;
    }
}

Por exemplo:

for (String linha = br.readLine(); linha != null; linha = br.readLine()) {
      System.out.println (linha);
}

equivale a:

{
    String linha = br.readLine();
    while (linha != null) {
        System.out.println (linha);
        linha = br.readLine(); 
    }
}

(Há um caso particular onde se omite a condição, ou “B” no exemplo acima. Nesse caso, B é considerado como se fosse “true”. )

Criado 31 de maio de 2013
Ultima resposta 3 de jun. de 2013
Respostas 9
Participantes 5