Questão nº 58
Questão de Tecnologia da Informação · FGV PCAM 2021 (nº 58)
FGV2021Perito Criminal - 4ª Classe - Processamento de DadosTecnologia da Informação
Gabarito: Bver comentário ↓
No contexto da linguagem C#, considere o código a seguir.
using System;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
int[] a = {4,64,32};
a[0] = a[0] >> 2;
a[1] = ++a[1] + 1;
a[2] = a[2] % 3;
foreach (int x in a)
{ Console.WriteLine(x);
}
}
}
}
Assinale a lista de números exibidos na execução desse código.
- A0, 66, 1
- B1, 66, 2 (alternativa correta)
- C2, 64, 3
- D4, 65, 2
- E8, 66, 0
Resposta comentada
Gabarito Alternativa B
Em C#, operadores como deslocamento de bits (>>), pré-incremento (++) e módulo (%) realizam operações específicas que alteram os valores das variáveis. É fundamental entender a ordem de avaliação e o efeito exato de cada um.
(A) Incorreta: O valor final de a[0] é 1, não 0. O valor final de a[2] é 2, não 1.
(B) Correta:
a = {4, 64, 32}.a[0] = a[0] >> 2;O operador>>desloca os bits para a direita. 4 em binário é00000100. Deslocando 2 posições para a direita, torna-se00000001, que é 1 em decimal. Então,a[0]vira 1.a[1] = ++a[1] + 1;O operador++antes da variável (++a[1]) é um pré-incremento. Isso significa quea[1]é incrementado ANTES de ser usado na expressão.a[1](que era 64) se torna 65. A expressão então é65 + 1, resultando em 66. Então,a[1]vira 66.a[2] = a[2] % 3;O operador%calcula o resto da divisão.32 % 3é o resto da divisão de 32 por 3, que é 2. Então,a[2]vira 2.- O array final é
{1, 66, 2}, e oforeachimprime esses valores.
(C) Incorreta: Todos os valores estão incorretos em relação ao cálculo.
(D) Incorreta: O valor final dea[0]é 1, não 4. O valor final dea[1]é 66, não 65.
(E) Incorreta: O valor final dea[0]é 1, não 8. O valor final dea[2]é 2, não 0.
Fonte: FGV PCAM 2021 Perito Criminal - 4ª Classe - Processamento de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.