Olá Pessoal, tudo bom?
Aqui é a resposta do puzzle 002. Veja na continuação deste post!
Puzzle 002 – Resposta
E aí, o que o código da classe Teste irá imprimir no console???
1 2 |
Valor varA = 2 Valor varB = 1 |
Mas porque ele imprimiu esses valores?
Vamos analisar o que aconteceu na linha 11:
1 |
varB = varA++ + varA++; |
Estabelecemos algumas verdades:
- Existe 2 operadores de pós incremento
- O valor inicial da varA é Zero
- O valor final da varA é dois
Bom, se existe dois operadores de pós incremento, significa que um deles causou um incremento em uma unidade da varA ao fim da execução desta linha. OK, mas e o outro? Vamos primeiro deduzir e depois explicamos um pouco melhor.
Com essa primeira verdade sobre um operador de incremento e com o valor final de varB sendo 1 nós podemos pensar que a expressão para dar o valor a B foi uma das seguintes opções:
1 = 0 + 1;
1 = 1 + 0;
Mas vamos pensar, faz sentido o valor de varA ter regredido, conforme a segunda opção? Nesse nosso caso seria impossível. Então a primeira opção é a verdadeira. Mas como aconteceu isso?
Ao tratarmos do operador de pós incremento, devemos ter o seguinte pensamento:
O operador de pós incremento será executado sempre que a mesma variável que possui o operador reaparecer na expressão.
Dessa forma vamos relembrar a expressão da linha 11 novamente:
1 |
varA++ + varA++; |
No momento que aparece o operador de pós incremento devemos fazer duas coisas:
- Substituir a variável com o operador pelo valor atual da variável
- Incrementar o valor da variável
No nosso caso a variável reaparece na expressão, logo devemos fazer a operação acima e ficar com os valores 0 + 1.
Depois do fim da expressão iremos novamente incrementar o valor de varA, para que fique com 2 unidades.
Assim, resumindo o que aconteceu foi o seguinte:
- Ao iniciar obtemos o valor de 0 unidades para varA.
- Adicionamos 1 unidade a varA, pois ela aparece novamente na expressão.
- Obtemos a valor de 1 para a segunda aparição de varA
- Foi realizada a operação de adição (0 + 1), atribuindo o valor final a varB (1)
- Foi realizada a segunda operação de pós incremento, adicionando 1 unidade a varA, chegando ao seu valor final (2)
finnaly{
Gostou dos puzzle? Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply