Tenisson,

Esse código tem cara de "pegadinha"...
O operador ++ pós-fixo obtém o valor da variável e só aí faz o incremento. O seu código i+= i++ equivale ao seguinte:

int i = 1;
i = i + i++;

que equivale a (em bytecode):

empilha o valor de i (i=1)
empilha o valor de i (i=1)
incrementa i (i=2)
soma dois valores da pilha (1+1) e atribui a i (i=2)

ou seja, i recebe 2 duas vezes...


Espero ter sido claro.

Flexa

At 13:31 15/1/2003, you wrote:
Pessoal,

 No código abaixo , eu esperava obter  "3" no valor da variável i. No
entanto , o valor retornado é "2" .
 Alguém poderia me explicar o porquê disso ?

public class Teste{
        public static void main(String args[]) {
                int i=1 ;
                i += i++ ;
                System.out.println(i);
        }
}

Obrigado,

Tenisson Chaves Jr.


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a