Ok.... Entendí... mas....  (paaaaaaaaaaaaa (campainha tocando))....
errado... não é este o comportamento...



Vc vai, pedir o valor de i++ a JVM;

Ele irá.... lhe devolver o valor atual de i, e imediatamente irá
incrementar....

O que acontece então...

o seu codigo pede i++
a JVM incrementa i...
a JVM devolve O QUE TINHA em i... (em função da ordem do ++)
o seu codigo atribui O QUE TINHA em i...
i então ficou com o que tinha....


Quer mais uma prova.... , eu inclui um metodo que sempre volta 0 eu seu
codigo original, imprimindo o valor de i, na proxima vez que vc precisa de
"i"... e veja o resultado.... Note que enquanto voce estiver dentro do
statement.... i sera igual a 1 (a partir da segunda iterção no statement), e
só será 0 após a execução do statement inteiro....



public class Class1 {
    public static void main(String arg[]) {
        int i=0;
        i=i++ + sempreZero(i);
        System.out.println ( "i = "  + i);
    }

    public static int sempreZero(int valor) {
        System.out.println ("Valor intermediario = " + valor);
        return 0;
    }
}


Valor intermediario = 1

i = 0




Espero que isto não lhe confunda ainda mains... he he.... :-)


Me responda em pvt se isto ajudou...

[]s,


Clebert

----- Original Message -----
From: "Lindomar Silva" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, February 27, 2002 9:19 PM
Subject: Re: [java-list] código obscuro!!


> É um teste interessante bruno...
>
> Creio que o procedimento não ceja bem atribuir antes e realizar o
incremento
> depois, já que o incremento se dá na mesma variável que recebe o zero.
>
> Acho que o comportamento é o seguinte:
> Quando o interpratador verifica o tipo de instrução ele sabe que tem que
> fazer uma atribuição primeiro, mas nesta atribuição temos uma instrução
> antes.
> Então: a atribuição (i=(i) que é 0) ele guarda num determinado endereço, e
> realiza o incremento i++, que nada mais é do que i=i+1, que é i=1.
> Ok, o incremento foi realizado, agora ele vai naquele endereço que guardou
o
> 0 e faz i=0;
> Logo em determinado instante i se torna 1 mas no final recebe o 0.
>
> Se for feito i=++i, ele irá primeiro incrementar para depois atribuir o
> valor de i=(i), que é 1. Por isso é que dá 1 no final.
>
> Façam o teste com outra variável, por exemplo: k=i++;  e depois k=++i;
> Creio que deva ajudar a endender minha linha de raciocínio.
>
>
>
>
>
>
> ----- Original Message -----
> From: "Paulo Bruno Contopoulos" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, February 27, 2002 4:23 AM
> Subject: RES: [java-list] código obscuro!!
>
>
>
>
> > -----Mensagem original-----
> > De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]]
> > Enviada em: terça-feira, 26 de fevereiro de 2002 11:59
> > Para: [EMAIL PROTECTED]
> > Assunto: [java-list] código obscuro!!
> >
> >
> > 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++ ?
> >
>
> Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás,
> porque não fazer i++ direto, ou você só estava fazendo um teste?
>
>
> []'s,
>
> Paulo Bruno Contopoulos
>
>
> ------------------------------ 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]
> -------------------------------------------------------------------------
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.325 / Virus Database: 182 - Release Date: 02/19/2002
>
>
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
>
>
> ------------------------------ 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