Qual o resultado da sequinte expressão?

7 respostas
R

Bom dia galera!

Estou um pouco na dúvida, em uma coisa q parece simples, mas pode se tornar um pouco confuso…

Código:

x = 0;
y = x++ + ++x;

Qual o resultado de y?
PS: Incluido os passos necessários para se chegar no resultado.

Valeu galera!!

7 Respostas

C

O resultado de y é 2.

x++ = guarda 1 para a próxima chamada de x, que no caso é ++x.

Então o ++x soma 1 com ele mesmo, que resulta no 2.

R

“Carneiro”:
O resultado de y é 2.

x++ = guarda 1 para a próxima chamada de x, que no caso é ++x.

Então o ++x soma 1 com ele mesmo, que resulta no 2.

Mas, diferente do pré, qdo vc faz o pós incremento, ele não pega primeiro o valor da variável para usar na expressão e depois incrementa a varável?

Segundo exemplo de expressão:

x = 3;

y = x++ + ++x;

Qual o resultado?

M

e ai…

No pos-incremento, ele incrementa a variavel, apos a execução da instrução ou ate encontrar outra operação com a variavel.

R

“marcosbrandao”:
e ai…

No pos-incremento, ele incrementa a variavel, apos a execução da instrução ou ate encontrar outra operação com a variavel.

Então o segundo exemplo de questão ficaria assim:
y = 4 + 5 = 9 ou
y = 4 + 4 = 8 ?

E nesse caso aqui abaixo:

x = 2;

a = 3;

y = x++ + ++a;

Qual o resultado?
C

Separe as variáveis que você entenderá melhor.

Exemplo:

int x = 3;

  int xPos = x++;
  System.out.println(xPos);
		
  int xPre = ++x;
  System.out.println(xPre);		

  int y = xPos + xPre; 
  System.out.println(y);
J

Na realidade, o que ocorre é o seguinte.

Quando é executado o operador de pós-incremento, ele incrementa x e retorna o valor antigo, no caso, o x vai pra 1 e retorna 0 pra expressão, ao executar o operador de pré-incremento, o x vale 1, então ele é incrementado pra 2, e retornado o próprio 2 pra expressão, aí a soma fica assim 0 + 2:

x --> 0
x --> 1, retorna 0
x --> 2, retorna 2
0 + 2 = 2
y = 2

Se você fizer isso:

x = 0;
y = x++ * ++x;

vai ver que o resultado é 0, porque:

x --> 0
x --> 1, retorna 0
x --> 2, retorna 2
0 * 2 = 0
y = 0

R

“jairelton”:
Na realidade, o que ocorre é o seguinte.

Quando é executado o operador de pós-incremento, ele incrementa x e retorna o valor antigo, no caso, o x vai pra 1 e retorna 0 pra expressão, ao executar o operador de pré-incremento, o x vale 1, então ele é incrementado pra 2, e retornado o próprio 2 pra expressão, aí a soma fica assim 0 + 2:

x --> 0
x --> 1, retorna 0
x --> 2, retorna 2
0 + 2 = 2
y = 2

Se você fizer isso:

x = 0;
y = x++ * ++x;

vai ver que o resultado é 0, porque:

x --> 0
x --> 1, retorna 0
x --> 2, retorna 2
0 * 2 = 0
y = 0

Maravilha jairelton…é exatamente o q eu queria saber…

Eu vi isso a algum tempo e não lembrava exatamente como ocorria…e com certeza isso irá cair na prova de certificação…então eu precisava ter certeza…

Concordo com vc!

Valeu!

Criado 12 de fevereiro de 2007
Ultima resposta 12 de fev. de 2007
Respostas 7
Participantes 4