If(i++ % 3 == 2)

Eh o seguinte:

Na lista de precedencia dos operadores em java, os operadores postfix “++” vem em primeiro lugar , depois vem modulo “%” e depois comparacao “==”. Mas nessa linha de codigo “if(i++ % 3 == 2)” a variavel “i” esta sendo incrementada depois que a comparacao eh feita.
Por que??

Quando o operador ++ é utilizado desta forma (i++), primeiro o valor atual da variável é utilizado na expressão para depois ela ser incrementada.
Se a intenção é incrementar a variável antes de utiliza-la na expressão, tente ++i.

Abraços.

Só complementando,

pré-fixando o operador, ou seja ++i, a variável primeiro soma 1 e depois passa o valor dela.
pós-fixando, i++ a variavel primeiro passa o valor dela e depois soma 1.

Segue um exemplo:

int x, y, z;
x = 42;
y = x ++; //y recebe o valor de x (42), antes que x seja incrementado
// neste ponto, y = 42 e x = 43
z = ++x; // x é incrementado para 44 e z recebe o valor de x (44)

Deu para dar um esclarecida? :wink:

Abraços,

Dando mais uma esclarecida ae pra fortalecer…

int x;
x = 10;

System.out.println(x) // imprime 10
System.out.println(x++) // imprime 10 depois pós-incrementa
System.out.println(x) // imprime 11

x=10;

System.out.println(x) // imprime 10
System.out.println(++x) // pre-incrementa e depois imprime 11
System.out.println(x) // imprime 11

espero ter ajudado…

Tudo bem pessoal, obrigado.

?Mas porque na lista de precedencia de operadores , tanto ++i como i++ vem em primeiro lugar?

Valeu

esse precedencia de que vc fala nao está relacionada com o pos ou pre-incremento mais sim com os operadores tipo… ==, != ou *,/,% …
(o pre e o pós-incremento estão na tabela de precedencia mas como uns dos operadores)

espero ter ajudado