Duvida com o for

Eu tava fazendo uns teste com pos e pre incrementacao…,e fiquei sem entender uma coisa…

No codigo 1 imprime ate o numero 149;como a pos incrementacao add depois da linha eu achei que iria
imprimir ate o 150 porque a variavel eh adcinada +1 apos a linha de verificacao do for…

Codigo 1

for (int x = 0;x < 150;x++){ System.out.println(x); }

O que daria no mesmo de usar o codigo abaixo…

Codigo 2

for (int x = 0;x < 150;++x){ System.out.println(x); }

Por que aconteceu isso??? :?

Devido a condição do teu for! Se quiser imprimir até os 150 utilize x <= 150 (ou x < 151, mas eu prefiro a primeira opção)

Deixa eu dar uma luz quanto à esse assunto do increment:

x++;

significa que na próxima vez que você invocar a variável x ele vai adicionar +1;

++x;

ele adiciona no momento da chamada, porque está incrementando antes de invocar.

ele vai parar no 149 porque 149 é menor que 150, quando chegar no 150 ele vai ver que 150 é igual a 150, então se voce quiser imprimir de 1 até 150
faz um

[code]for(int i = 1; i <= 150; i++)
{
System.out.println(i);
}

Um for assim:

for (<inicialização>;<teste>;<incremento>){ <código> }

É traduzido para isso aqui:

<inicialização> while (<teste>) { <codigo> <incremento> }

Portanto, seus fors são traduzidos para o seguinte:

int x = 0; while (x < 150) { System.out.println(x); x++; }

int x = 0; while (x < 150) { System.out.println(x); ++x; }

E, como vc pode ver, ambos são iguais. Tanto faz incrementar com x++ ou ++x. Como o incremento só é realizado ao final da instrução, ambos os códigos são equivalentes.

A única diferença é o escopo da variável. Durante a tradução o compilador garante que aquela inicialização só valerá para dentro do for.