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