Tá aí o teste...
Porém...ouvi dizer aqui na lista que isto é dependente de plataforma...
Não sei se é verdade... mas se for.... devemos ter muito cuidado mesmo....
Alguém sabe dizer se é realmente verdade????
 
--------------------------------------------------------------
C:\Desenv\Java\teste>java testaI
Antes da terrÝvel d·vida(i=i++;), i vale:0
Depois da terrÝvel d·vida(i=i++;), i vale:0
Agora com (i=++i;), i vale:1
System.out.println(i) : 0
System.out.println(i++) : 0
System.out.println(i) : 1
Dentro do while (5>=i++), i vale:0
Dentro do while (5>=i++), i vale:1
Dentro do while (5>=i++), i vale:2
Dentro do while (5>=i++), i vale:3
Dentro do while (5>=i++), i vale:4
Dentro do while (5>=i++), i vale:5
Dentro do while (5>=i++), i vale:6
Dentro do while (5>=++i), i vale:0
Dentro do while (5>=++i), i vale:1
Dentro do while (5>=++i), i vale:2
Dentro do while (5>=++i), i vale:3
Dentro do while (5>=++i), i vale:4
Dentro do while (5>=++i), i vale:5
-----------------------------------------------------
public class testaI {
 
 int i;
 public testaI(){
 
  i =0;
  System.out.println("Antes da terrível dúvida(i=i++;), i vale:" + i);
  i = i++;
  System.out.println("Depois da terrível dúvida(i=i++;), i vale:" + i);
  i = ++i;
  System.out.println("Agora com (i=++i;), i vale:" + i);
 
  i=0;
  System.out.println("System.out.println(i) : " + i);
  System.out.println("System.out.println(i++) : " + i++);
  System.out.println("System.out.println(i) : " + i);
 
  i=0;
  do{
     System.out.println("Dentro do while (5>=i++), i vale:" + i);
    }while(5 >= i++);
 
    i=0;
      do{
         System.out.println("Dentro do while (5>=++i), i vale:" + i);
    }while(5 >= ++i);
 
 }
 
 public static void main(String [] arg){
  testaI app = new testaI();
 }
 
}
 
 
 
---------------------------------------------------------------
----- Original Message -----
Sent: Wednesday, February 27, 2002 3:36 AM
Subject: Re: RES: [java-list] código obscuro!!

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