Apoio Especializado - Tecnologia da Informação - Desenvolvimento de Sistemas
No contexto da linguagem C#, considere o código a seguir.A execução desse script provoca:
Aa exibição do valor 5;
Ba exibição do valor 6;
Ca exibição dos números 0,1,2,3,4;
Dum erro de compilação;
Eum erro de execução de variável sem valor atribuído.
Revelar gabarito e comentário▾
GabaritoD — um erro de compilação;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Erro de compilação em C#: variável não atribuída
Gabarito: letra D. O código apresentado provoca um erro de compilação, pois a variável x é declarada sem valor inicial e é utilizada em uma expressão (x++) antes de receber qualquer atribuição — o compilador C# exige que variáveis locais sejam definitivamente atribuídas antes do uso (regra de definite assignment, prevista na especificação da linguagem C#).
O C# é uma linguagem de tipagem estática e forte, com verificação em tempo de compilação. Uma das regras mais rígidas do compilador é a atribuição definitiva (definite assignment): toda variável local deve ter um valor antes de ser lida. Isso vale para qualquer uso — em operações aritméticas, em chamadas de método, em estruturas de controle etc. O objetivo é impedir que o programa acesse memória não inicializada, um erro comum em linguagens como C e C++.
No código da questão, a variável x é declarada (por exemplo, int x;) e, em seguida, usada em uma expressão como x++ ou Console.WriteLine(x), sem que tenha recebido um valor. O compilador detecta essa violação e emite o erro CS0165: Uso de variável local não atribuída (em inglês: Use of unassigned local variable 'x'). Esse é um erro de compilação, não de execução — o programa nem chega a rodar.
Para corrigir, bastaria inicializar a variável: int x = 0; ou int x = 5;. A partir daí, o código compila e executa normalmente, exibindo o valor esperado.
A pegadinha da banca está em confundir erro de compilação com erro de execução. Em linguagens como JavaScript ou Python, uma variável não inicializada pode resultar em undefined ou null em tempo de execução — mas em C# isso é barrado antes de executar, pelo compilador. O candidato que não conhece a regra de atribuição definitiva tende a marcar a alternativa E, achando que o programa rodaria e falharia depois.
Guarde a distinção: erro de compilação = o código nem vira executável; erro de execução = o código compila, mas falha ao rodar. É exatamente essa fronteira que separa as alternativas D e E.
1Declaração sem valor
2Uso em expressão
3[-] Erro de compilação (CS0165)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A exibição do valor 5 só ocorreria se a variável tivesse sido inicializada com 5 e depois incrementada ou impressa. Como a variável não recebe valor, o código nem compila — não há execução para exibir nada.
Alternativa B — ❌ Incorreta
O valor 6 seria exibido se houvesse uma inicialização (ex.: int x = 5; x++;) e o resultado fosse impresso. Sem atribuição inicial, o compilador bloqueia o uso da variável, então nenhum valor é produzido.
Alternativa C — ❌ Incorreta
A exibição de 0,1,2,3,4 sugere um laço for com x iniciado em 0. Mas o código não contém um laço — e, mesmo que contivesse, a variável precisaria ser inicializada. A ausência de atribuição impede a compilação.
Alternativa D — ✅ Correta ⟵ GABARITO
O compilador C# aplica a regra de atribuição definitiva: variável local declarada sem valor não pode ser usada em expressões. O uso de x antes de qualquer atribuição gera o erro de compilação CS0165. O programa não é executado.
Alternativa E — ❌ Incorreta
Erro de execução de variável sem valor atribuído não existe em C# para variáveis locais: o compilador impede o uso antes da atribuição. Esse tipo de erro (uso de variável não inicializada) só ocorreria em linguagens sem verificação estática, como C/C++ (comportamento indefinido) ou JavaScript (undefined). Em C#, a falha é detectada em tempo de compilação, não em execução.
NÃO CAIA NESSA!
A banca explora a confusão entre erro de compilação e erro de execução. Em C#, variável local não inicializada é barrada pelo compilador (CS0165) — o programa nem roda. Já em linguagens como JavaScript, a mesma situação geraria undefined em execução. Fique atento: se a questão é de C#, a palavra-chave é compilação.
PEGA ESSA DICA!
Na prova, ao ver uma variável declarada sem valor e usada em seguida, marque erro de compilação — é a regra de atribuição definitiva do C#. Para fixar: int x; Console.WriteLine(x); → CS0165. Inicialize sempre: int x = 0;.