Incremento

4 respostas
filipegpaulo

Boa noite,

Gostaria de saber porque esse codigo está gerando um loop infinito, visto que deveria exibir uma sequência de 0 à 10, pois a representação "i++" é igual a "i = i+1"

class Incremento{
public static void main (String args[]){

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

	}
}

Quando eu utilizo "++i" ele exibe a sequencia de 0 à 10 corretamente...
Qual a diferença entre "i++" e "++i"?

4 Respostas

getAdicted

Bom dia amigo,

O ++i eh incrementado e depois eh usado na expressão, o i++ eh usado na expressão e depois incrementado. Talvez isso esteja causando problema, tente depurar o código para obter mais informações.

[]'s

S
Use
class Incremento{
public static void main (String args[]){

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

	}
}
hectorhansen

tire o i= e use apenas o i++

class Incremento{  
public static void main (String args[]){  
  
for (int i = 1; i &lt;=10; i++){  
System.out.println (i);  
}  
  
    }  
}
ViniGodoy

Com i++, o valor antigo de i é usado na expressão, e o incremento é a última operação a ocorrer.

Por exemplo:
int x[] = {0,1,2,3};
int i = 0;

System.out.println(x[i++]); //Vai imprimir x[0]
System.out.println(i); //Imprime i=1, o incremento ocorreu após o comando acima
A expressão
i = i++

É uma das poucas em Java que tem comportamento indefinido, pois o = também é o último a ser avaliado numa expressão. Então, fica difícil dizer se a operação ocorrerá antes ou depois de i++, ou mesmo numa situação esdruxula (o valor a ser atribuído no = ser avaliado antes, o incremento ocorrer, e em seguida a atribuição ser feita, como parece ter sido seu caso).

O operador ++i soma imediatamente ao i o valor 1.

Criado 11 de fevereiro de 2012
Ultima resposta 12 de fev. de 2012
Respostas 4
Participantes 5