Considere o seguinte método expressão implementado em Java. ...
public static int expressao( int A, int B, int C){
A += B; C <<= A; B ^= B; if( B > C ) return C; else return B; }
Qual o resultado retornado pelo método expressão quando A=1, B=2 e C=1 ?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: A - 0
Vamos entender por que essa é a resposta certa.
O método expressao é escrito em Java e envolve operações aritméticas e lógicas. Para resolvê-lo, é essencial compreender como essas operações funcionam:
1. Atribuições e Operações
- A += B; - Esta linha aumenta o valor de A somando B a ele. Inicialmente, A é 1 e B é 2. Após essa operação, A se torna 3.
- C <<= A; - Aqui, C é deslocado para a esquerda A vezes. O deslocamento à esquerda duplica o valor de C a cada movimento. C é 1 e A agora é 3, assim C torna-se 8 (1 << 3 = 8).
- B ^= B; - Esta operação XOR entre B e ele mesmo resulta em 0, pois qualquer número XOR com ele mesmo é sempre 0. Portanto, B passa a ser 0.
2. Estrutura Condicional
- A condição if (B > C) verifica se B (0) é maior que C (8). Isso não é verdade.
- Como B não é maior que C, a execução recai na cláusula else, que retorna B.
Portanto, o método retorna o valor de B, que é 0. Daí a alternativa correta ser a A - 0.
Alternativas Incorretas:
- B - 1: Não pode ser a resposta, pois B foi definido como 0 após a operação XOR.
- C - 2: Sem relação com as operações realizadas.
- D - 3: Esse valor refere-se a A após o incremento e não é retornado pelo método.
- E - 8: Esse é o valor de C após o deslocamento à esquerda, mas não é retornado porque B não é maior que C.
Conclusão:
Para solucionar questões como esta, é essencial compreender as operações aritméticas e lógicas, bem como a ordem de execução e como tomam forma dentro de estruturas de controle como o if-else. Esse conhecimento é crucial para decifrar corretamente a lógica de um código em Java e determinar a saída de funções ou métodos.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Operador bit a bit (<<) ele faz deslocamento normalmente usado para complemento a 2(Empurram o bit para esquerda ou direita)
C <<= A onde (C= 1 e A =3) <- nesse momento
1 << 3 =
Convertendo 1 para binario = 0001
0001 << 3 Vamos empurrar o bit 1 para esquerda e atrás dele adicionar 0 a cada empurrão
0010 <<
0100 <<
1000 <<
1000 (base 2) = 8 (base 10)
C <<= A
C vai passar a ser 8;
___________________________
B ^= B;
Operador ^ usado para ou Exclusivo bit a bit
onde 2 em base binaria = 0010
0010
0010
Xor ____
0000
B= vai receber 0
A) 0
GABARITO A
Sem mais a acrescentar excelente comentário Concurseiro Raiz.
Foco na missão, eu vou ser QCO !
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo