Tenisson,
Quando você executa o comando i++ está adicionando 1 para a variável,
resultando 2.
O que acontece é isso:
int i=1 ;
i+=i++; // 1+=2;
System.out.println(i); // 3
Abraços,
Eduardo
- Original Message -
From: Tenisson Chaves dos Santos Júnior [EMAIL PROTECTED]
To: [EMAIL
Olá Tenisson !
Se voce usasse i += ++i receberia o numero 3. Acontece que usando i++, primeiro
ele usa o valor da variavel
e só depois incrementa. No caso do ++i, primeiro ele incrementa e depois apresenta a
variavel. Me corrjam se
estas definições estiverem erradas, por favor.
Aí brother,
substitui o i++ por ++i que vc vai achar 3
[]s
Alexandre Rocha
-Original Message-
From: Tenisson Chaves dos Santos Júnior
[mailto:[EMAIL PROTECTED]]
Sent: quarta-feira, 15 de janeiro de 2003 13:31
To: [EMAIL PROTECTED]
Subject: [java-list] Dúvida em código
a diferenca
++i - primeiro incrementa
i++ - primeiro atribui e depois incrementa
i = 1
i += i++ = i = i + i = sendo i = 1, 1+1 = 2, depois ele incrementa o valor
de i quando ele termina.
como se fosse no loop
for (int i=0, i 5; i++){
int j = i ++;
System.out.println(j);
}
for (int i=0,
pq na expressao i++ o interpretador avalia a variavel antes de incrementar
logo: 1 + 1 = 2
se vc colocar
i += ++i vc obterá 3, pois o interpretador primeiro incrementa, depois
avalia a expressao
1 += 2 = 3
a expressao sera avaliada
i = i++ +i;
-Original Message-
From: Tenisson Chaves
i = 1
i += --- 1+1 = 2
Isto acontece porque a variável i que está do lado direito, primeiro é
atribuída a
variável i do lado esquerdo, ficando o sinal de ++ sem função para o lado
esquerdo
da expressão, no entanto a variável i do lado direito dá uma expectativa
de que como
ela já havia sido
E ai Tenisson!
O que acontece aqui é o seguinte ,devido o incremento estar a direita
da varivavel, o mesmo só sera realizado após essa passagem. Com isso o
valor i só irá ser 2 após essa passagem da expressão.
Tente esse codigo.
public class Teste{
public static void main(String
troque o i++ por ++i ;)
se depois q vc fizer isso, nao entender o porque de tudo, manda devolta a
pergunta q eu, ou outra pessoa te explica certinho... :D
[]'s...
Bruno Cesar Borges [miojo]
Programador Java Semi-Pleno
ICQ: 8584744
MSN: [EMAIL PROTECTED]
*RUMO* ao
Tenisson,
Esse código tem cara de pegadinha...
O operador ++ pós-fixo obtém o valor da variável e só aí faz o incremento.
O seu código i+= i++ equivale ao seguinte:
int i = 1;
i = i + i++;
que equivale a (em bytecode):
empilha o valor de i (i=1)
empilha o valor de i (i=1)
incrementa i (i=2)
i++ // depois que faz a operação que incrementa o valor de i.
++i // primeiro incrementa o valor de i para depois fazer a operação.
então para você obter 3, terá que fazer:
int i=1 ;
i += ++i ;
Ok.
- Original Message -
From: Tenisson Chaves dos Santos Júnior [EMAIL PROTECTED]
To:
Cara tenta o seguinte:
public class Teste{
public static void main(String args[]) {
int i=1 ;
i += ++i ;
System.out.println(i);
}
}
Julio Lima
Programador (GESPV)
Sul América Seguros
(21)
Fala Tenisson
Você deveria ter usado ++i, pois o que vc usou primeiro executa a soma i += i e
depois soma um equanto o ++i incrementa i primeiro e depois executa i += i.
[]´s
Felipe
-Original Message-
From: Tenisson Chaves dos Santos Júnior
[mailto:[EMAIL PROTECTED]]
Sent:
Ola Tenisson,
1 i=1
2 i+=i++;
Na linha 1 a variavel i tem o valor 1
Na linha 2 a variavel i tem o valor 2 porque sera incrementada depois que
somar mais 1 e passar o valor para i.
Se voce quizer o valor 3, faca da seguinte forma
i=1
i+=++i
[]s,
- Original Message -
From: Tenisson
Tenisson Chaves Jr.
Em Java a expressão ( i += i++ ) funciona da seguinte maneira:
primeiro o compilador soma o valor de i com o valor do segundo i e em
seguida ele adiciona 1 ao valor do segundo i . para que em sua expressão
você obtenha o resultado 3 basta que ao invés de usar i++ você use ++i
Tenisson,
Na verdade, o ++ após a variável faz o ++ depois da atribuição e o ++ antes
da variável, faz o ++ antes da atribuição, assim:
i += i++; // resulta 2, pois ele atribuiu i += i, e depois ele faria o
++;
i += ++i; // resulta 3, pois ele fez primeiro o i++ e depois i+= i;
É uma questão de precedência de operadores.
A operação += tem precedência maior do que a operação ++.
Portanto, primeiro é feita a operação i = i + 1, e depois é feita a
operação i++ (sem atribuir a nada)
Dessa forma, o resultado é mesmo 2.
Esperimente inverter a operação. Ao invés de i++,
Para facilitar a explicacao entenda a semantica de seu programa :
int i = 1; cria-se uma variavel do tipo primitivo int
com valor 2
i += i++;
O que o COMPILADOR faz ?
// i += i++;faz um parse de seu código e substitui essa linha
pela debaixo
i = i + i++;
O
De uma pesquisada em operadores de java para maiores detalhes.
O que acontece é o seguinte:
Ao avaliar a expressão, ele expande i++ para 1, que é o valor de i no
momento e incrementa 1 a i.
Se vc quiser que de 3, é so usar o pre incremento ++i.
Adriano Andrulis
- Original Message -
From:
A primeira vista é algo muito estranho... mas pensa o seguinte:
Quando você faz i += i, o lado direito considera o valor da variável ( no
caso, 1). Logo, i = 2.
Por outro lado, quando você faz i++, primeiro é retornado o valor da
variável ( ainda 1 ), e após é incrementado. Logo, i=2.
Note que
19 matches
Mail list logo