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]
-------------------------------------------------------------------------