Esse codigo vai resultar em '0' (zero) tanto em Java quanto em C/C++. O problema aqui eh de qual operacao esta acontecendo.
Veja o que acontece com a variavel 'i' nesse seu programa: { 1 int i = 0; 2 i = i++; 3 System.out.println(i); } Na linha 1 i recebe o valor 0 (zero). Na linha 2 acontece uma atribuicao, e a parte a direita do operador e calculada. Como o operador ++ esta a DIREITA da variavel, o valor da expressao eh calculado com o valor inicial da variavel, 0 (zero) nesse caso. O operador ++ eh entao executado, e o valor de i vai para 1 (um). Apos isso, a operacao de atribuicao ira acontecer, e o valor da expressao calculada eh 0 (sero), e esse valor eh novamente atribuido a variavel 'i', fazendo com que chegue a linha 3 zerada! Ficou claro? E esse comportamento eh o mesmo em C, C++ ou Java, que eu saiba. Silvio On Tue, 26 February 2002, Cristiano Bianchi Sanchez wrote > > Oi lista, > > Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? > > { > int i = 0; > i = i++; > System.out.println(i); > } > > Não seria mais 'lógico' retornar 1, como em C++ ? > > Abraços, > > CristianoBS > > ------------------------------ 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] -------------------------------------------------------------------------