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!!
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!!
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.
[quote=“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.[/quote]
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?
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.
[quote=“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.[/quote]
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?
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);
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
[quote=“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[/quote]
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!