Suponha que você precise representar os valores indicados nos itens abaixo em um programa escrito na Linguagem C. Indique o tipo de dado mais adequado para cada caso, explicando o porquê da escolha.
Respostas de uma questão do tipo teste, que pode ser a letra a, b, c, d ou e

Passo 1

O enunciado pede que eu indique, para os “itens abaixo”, o tipo de dado mais adequado em um programa em C e explique o porquê de cada escolha. Também diz que a resposta esperada é uma alternativa de teste (uma letra: a, b, c, d ou e).
Informações dadas:
  • Só foi informado o pedido geral (escolher tipos adequados e justificar).
  • Não foram enviados os “itens abaixo” que preciso classificar (ou seja, os valores ou descrições que eu teria de mapear para tipos C estão ausentes).
Consequência imediata: sem os itens concretos não há como decidir corretamente qual alternativa (uma das letras a e) corresponde à resposta do teste, porque não sei que valores ou descrições preciso representar.

Passo 2

Vou fazer duas coisas úteis para você que está estudando: (1) explicar, passo a passo e de forma prática, quais informações são necessárias para escolher um tipo em C; e (2) dar regras e exemplos diretos que você pode usar na prova para decidir rapidamente quando os itens forem apresentados. Assim, mesmo que eu não possa marcar a letra correta agora, você ficará bem equipado para escolher a letra certa no teste.
  1. Que informações eu preciso ver num item para escolher o tipo?
  • Se o valor é inteiro ou real (tem casas decimais)?
  • Qual o intervalo máximo/minimo possível (por exemplo, até 10^6, ou pode exceder 2^{31}-1)?
  • Precisa ser negativo/também pode ser negativo (signed) ou sempre não negativo (unsigned)?
  • Precisa de precisão decimal alta (por exemplo, coordenadas científicas, dinheiro)?
  • É texto (uma palavra, um identificador) em vez de número?
  • É uma bandeira verdadeira/falsa (booleano)?
  • É uma coleção de campos diferentes (precisa de struct)?
  • Há restrição de memória/performance (usar menor tipo possível)?
  1. Resumo dos tipos básicos de C que você deve conhecer (o que são e quando usar)
  • \texttt{char}: ocupa geralmente \,1 byte. Use para um único caractere (por exemplo, letra ‘A’) ou para pequenos códigos numéricos entre -128 e 127 (se for \texttt{signed}) ou 0 a 255 (se \texttt{unsigned}). Para strings, usa-se array de \texttt{char} (ex.: \texttt{char nome[50]}).
  • \texttt{short} (ou \texttt{short int}): geralmente \,2 bytes; serve para inteiros com magnitude pequena.
  • \texttt{int}: tipo inteiro mais usado; em muitas plataformas é \,4 bytes com intervalo aproximado de -2\,147\,483\,648 a 2\,147\,483\,647. Use quando valores cabem nesse intervalo.
  • \texttt{long} / \texttt{long long}: quando precisa de inteiros maiores. \texttt{long long} normalmente tem \,8 bytes com intervalo aproximado de -9\,223\,372\,036\,854\,775\,808 a 9\,223\,372\,036\,854\,775\,807. Use para contadores muito grandes.
  • Tipos unsigned: \texttt{unsigned int}, \texttt{unsigned long} — use quando o valor nunca é negativo e quer ampliar o teto positivo (por exemplo, número de itens, índices, contagens).
  • \texttt{float}: ponto flutuante de precisão simples ( ~6 7 dígitos decimais precisos). Use quando precisa de casas decimais mas não muita precisão (por exemplo, medidas aproximadas).
  • \texttt{double}: ponto flutuante de precisão dupla ( ~15 16 dígitos). Use quando precisa de mais precisão (cálculos científicos, coordenadas).
  • \texttt{long double}: para ainda mais precisão em plataformas que o suportam.
  • \texttt{\_Bool} ou \texttt{bool} (com \texttt{<stdbool.h>}): para verdadeiro/falso.
  • \texttt{char[]} ou \texttt{char*}: para cadeias de caracteres (nomes, CPFs quando não se quer tratar como número).
  • \texttt{struct}: agrupa campos heterogêneos (por exemplo, endereço com rua, número, cidade).
  • Para dinheiro: evite ponto flutuante por causa de erros de arredondamento; prefira inteiro que represente centavos (ex.: usar \texttt{long long} para armazenar centavos) ou tipos de ponto fixo/decimal se disponíveis.
  1. Como decidir rapidamente (procedimento prático que serve na prova)
  • Passo A: identificar se é inteiro ou real.
  • Passo B: estimar o maior valor possível (ordem de grandeza). Se for até cerca de 2\,147\,483\,647, \texttt{int} provavelmente basta. Se só positivo, \texttt{unsigned int}. Se maior que isso, vá para \texttt{long long}.
  • Passo C: se tiver casas decimais, pergunte: quantos dígitos de precisão são necessários? Se pouca, \texttt{float}; se média/alta, \texttt{double}. Para dinheiro, prefira inteiro em centavos.
  • Passo D: se for texto (nome, código que não sofre cálculo), escolha \texttt{char[]}.
  • Passo E: se for verdadeiro/falso, escolha \texttt{bool}.
  • Passo F: se o enunciado diz “identificador com zeros à esquerda” (ex.: matrícula “000123”), trate como string ( \texttt{char[]}), não como número.
  1. Exemplos práticos (muito usados em provas) e a escolha recomendada com justificativa curta
  • “Idade em anos” → \texttt{unsigned int}: idade nunca negativa; cabe em \texttt{unsigned int} e é eficiente.
  • “Temperatura com casas decimais” → \texttt{float} ou \texttt{double}: se enunciado pede precisão alta (ex.: ciência), use \texttt{double}; para leituras simples, \texttt{float} basta.
  • “Código de cliente composto por letras e números (não usado para cálculo)” → \texttt{char[]}: porque precisa preservar caracteres e possivelmente zeros à esquerda.
  • “Saldo em reais” → armazenar em centavos com \texttt{long long} (inteiro) ou usar \texttt{double} com cuidado; a opção inteira evita erros de arredondamento.
  • “Flag que indica se usuário está ativo” → \texttt{bool}: semântica clara e ocupa pouco espaço.
  • “Número binário de 8 bits” → \texttt{unsigned char}: armazena 0 a 255 e corresponde bem ao tamanho.
  • “Contador que pode ultrapassar 4 bilhões” → \texttt{unsigned long long}: precisa de 64 bits para acomodar valores além de 4\,294\,967\,295.
  1. Observação sobre portabilidade
  • Em C, tamanhos dependem da plataforma; em provas, se o enunciado não fala o modelo, costuma-se assumir o modelo comum em exercício: \texttt{int} com \,4 bytes e \texttt{long long} com \,8 bytes. Se a prova exige precisão absoluta, o próprio enunciado normalmente dá o intervalo numérico — use esse intervalo para escolher o menor tipo que cabe.
  1. Como usar isso para marcar a letra correta no teste
  • Leia cada alternativa a e e cheque se os tipos sugeridos por essa alternativa satisfazem TODOS os itens do enunciado (cada opção de múltipla escolha geralmente dá uma associação completa). A alternativa correta é a que usa tipos adequados para cada item segundo o procedimento prático acima (inteiro vs real, intervalo, signedness, texto vs número, precisão).
  • Se uma alternativa usa ponto flutuante para representar dinheiro sem justificativa, desconfie — normalmente provas preferem inteiro em centavos.
  • Se uma alternativa escolhe \texttt{char} para armazenar um número que pode exceder 127, e não menciona \texttt{unsigned}, desconfie.

Passo 3

Conclusão prática imediata: sem os itens concretos eu não posso escolher a alternativa a, b, c, d ou e. O que eu fiz acima é o roteiro que você deve aplicar em exame: identifique se é inteiro/real/texto/boolean; estime máximo/precisão; escolha o menor tipo que acomode requisitos; prefira inteiros para dinheiro (centavos); prefira \texttt{char[]} para identificadores que não serão calculados.
Se você colar aqui os “itens abaixo” (mesmo listando curto, ex.: “idade = 0–120”, “saldo em reais com centavos”, “nome do cliente”), eu aplico o procedimento e já te retorno passo a passo qual letra ( a e ) corresponde à resposta correta, com justificativa detalhada.

Resposta

Impossível responder: os itens a serem classificados não foram fornecidos.

Exercícios relacionados