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.
eltonk
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:
intx,y,z;x=42;y=x++;//y recebe o valor de x (42), antes que x seja incrementado// neste ponto, y = 42 e x = 43z=++x;// x é incrementado para 44 e z recebe o valor de x (44)
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…
Z
ZinhoPJ
Tudo bem pessoal, obrigado.
?Mas porque na lista de precedencia de operadores , tanto ++i como i++ vem em primeiro lugar?
Valeu
S
sudevalPJ
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)