Questão comentada: [Desenvolvimento de Sistemas] Marinha 2013 – Quadro Técnico da Marinha – Informática
Fala, galera! Beleza?
Comentei uma questão sobre a Linguagem Java. Mais especificamente sobre Operadores de Incremento/Decremento e Operador de Atribuição Composta.
Então simbora, papai!
Com relação às estruturas de controle aplicáveis à linguagem JAVA, ambiente Netbeans 7 . 2 . 1, no programa acima, que sequência será impressa ao final de sua execução?
[A] -110111
[B] 0-10-111
[C] 011000
[D] 000000
[E] 000-100
Comentários:
A questão foca nos operadores de incremento e decremento. Eles podem ser:
- Pré-fixados: é avaliado o valor incrementado (decrementado) de uma variável, ou seja, o valor trabalhado já é o incrementado (decrementado) ; e
- Pós-fixados: é avaliado o valor original, ou seja, o valor trabalhado é o valor original de uma variável e depois o valor da variável é incrementado (decrementado) .
Exemplo com o operador de incremento/decremento pré-fixado:
int x = 15;
System.out.println(“x: ” + ++x); // O resultado gerado é x: 16.
Exemplo com o operador de incremento/decremento pós-fixado:
int x = 15;
System.out.println(“x: ” + x++); // O resultado gerado é x: 15.
System.out.println(“x: ” + x); // O resultado gerado é x: 16.
Agora iremos ao código da questão.
A variável c inicia com 1:
int c = 1;
A variável c é atualizado com 0:
c = 0;
Será impresso o valor original da variável c (decremento pós-fixado) e depois será decrementado (a variável c é atualizado para -1):
System.out.print(c–); // Será impresso 0.
Será impresso o valor já incrementado da variável c (decremento pré-fixado) (a variável c é atualizado para 0):
System.out.print(++c); // Será impresso 0.
Será impresso o valor atual da variável c:
System.out.print(c); // Será impresso 0.
Seguindo no código, temos a utilização de um operador de atribuição composta:
c -= –c – c++;
Organizando o trecho acima, temos:
c = c – ((–c) – (c++));
Tudo o que está à direita do operador de atribuição será repassado para a variável c. Então vamos comentar esse lado do operador:
- Primeiro operando (c): c é igual a 0 (valor da variável até o momento);
- Segundo operando (–c): c é igual a -1 (valor já decrementado da variável, pois se está usando operador de decremento pré-fixado);
- Terceiro operando (c++): c é igual a -1 (valor atualizado da variável no segundo operando e depois o valor é incrementado).
Organizando o trecho agora com valores, temos:
c = 0 – ((-1) – (-1));
c = 0 – (-1 + 1);
c = 0 – 0;
c = 0;
Será impresso o valor original da variável c (decremento pós-fixado) e depois será decrementado (a variável c é atualizado para -1):
System.out.print(c–); // Será impresso 0.
Será impresso o valor já incrementado da variável c (decremento pré-fixado) (a variável c é atualizado para 0):
System.out.print(++c); // Será impresso 0.
Será impresso o valor atual da variável c:
System.out.println(c); // Será impresso 0.
Ao final, será impresso 000000.
Gabarito: letra D.
Referência:
- JSE02 – Java Standard Edition (Prof. Rogério Araújo) – Mód. 02. Disponível em: http://www.provasdeti.com.br/jse02ra-para-concursos.html.
É isso aí, galera.
[]s e até a próxima.
——————————————
Rogério Araújo