Considere o seguinte método expressão implementado em Java. ...

Próximas questões
Com base no mesmo assunto
Q874214 Programação
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 ?
Alternativas

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