A questão é que:
 
(1) i=0;
(2) i=i++; (atribuir e depois incrementar) ou i=++i (incrementar e depois atribuir)
(3) valor de i
 
Tanto faz (na segunda linha) a atribuição ser antes ou depois do incremento de i, pois chegando na linha 3 o incremento em i deveria ter ocorrido, já que na linha 2 um incremento tem que ocorrer.
 
Dei uma idéia sobre isso num e-mail anterior, mas a dúvida continua.
Só pode ser coisa da linguagem mesmo, por que pela lógica de programação deveria dar 1 em ambos os casos. Tanto é se vocês testarem com as linhas de comando (1) k=i++ e (2)k=++i, os resultados são  realmente os esperados (1) k=0, i=1. (2) k=1, i=1.
 
 
----- Original Message -----
Sent: Wednesday, February 27, 2002 1:45 PM
Subject: Re: RES: [java-list] código obscuro!!

[EMAIL PROTECTED]" type="cite">
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?

Porém, de qualquer forma, mesmo atribuindo antes de adicionar ele deveria fazer igual o C++ uma vez que a precedencia em C++ é igual.
-- 
"'You guys (at Microsoft) still don't get it,' 
because it's sort of Java with reliability, productivity and security deleted."

					James Gosling


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

Responder a