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