Alternativa C - Variáveis não devem começar com caracteres especiais como o hífen utilizado na declaração.
Introdução à Sintaxe do C
O erro apontado na questão refere-se às regras de nomenclatura para identificadores (nomes de variáveis) na linguagem C. Para que o compilador entenda corretamente o código, é necessário seguir padrões estritos sobre como os nomes podem ser construídos.
A linha de código apresentada foi: char -nome;. O problema central está no início do identificador.
Análise das Regras de Nomes em C
Em C, um identificador válido deve obedecer aos seguintes princípios fundamentais:
- Caracteres Permitidos: Devem conter apenas letras (a-z, A-Z), dígitos ($0-9$) e o sublinhado (\_).
- Primeiro Caracter: Deve obrigatoriamente iniciar com uma letra ou um sublinhado. Nunca pode começar com um dígito ou símbolo de pontuação.
- Uso do Hífen: O símbolo
- é interpretado pelo compilador como o operador de subtração unária (negativo). Portanto, ao escrever char -nome, o sistema tenta interpretar isso matematicamente ou operacionalmente, gerando um erro de sintaxe imediato.
| Tipo de Caracter | Exemplo Válido | Exemplo Inválido | Motivo |
|---|
| Letra inicial | int x; | int 1x; | Não pode iniciar com número |
| Sublinhado inicial | int _var; | int -var; | Não pode iniciar com sinal |
| Símbolo especial | int nome1; | int nome#; | Não contém símbolos proibidos |
Por que as outras alternativas estão incorretas?
Para consolidar o aprendizado, vamos analisar por que as demais opções não se aplicam a este caso específico:
- A:
-nome não é uma palavra reservada (palavra-chave). Palavras reservadas são termos como int, float, if, for. O erro é de sintaxe da nomenclatura, não de conflito com palavras chave. - B:
char é sim um tipo de dado existente e fundamental em C, usado para armazenar caracteres individuais. - D: Em C, toda instrução declarativa deve terminar com ponto e vírgula (
;). Sua ausência causaria outro erro de compilação, mas não é o erro presente nesta linha específica. - E: É permitido declarar variáveis sem inicialização imediata. Embora o valor seja indeterminado até que seja atribuído algo, a declaração em si é válida.
Conclusão
O erro ocorre porque o nome da variável começa com um caractere especial (-), o que viola as regras básicas de construção de identificadores na linguagem C. A alternativa correta é a C.