Questão de Programação — Conceitos básicos de programação — FGV 2024
Programação›Conceitos básicos de programação
Código
fg086203
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Pleno I - Desenvolvimento de Sistemas de Suprimento de Energia para Satélites
Um programa de computador, ao efetuar apenas operações com inteiros, fornecerá para a expressão((7/4)*4) + (((unsigned int)(-9)/2)*2)o seguinte resultado:
A0.
B–2.
C–4.
D+3.
E–6.
Revelar gabarito e comentário▾
GabaritoE — –6.
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”.
Expressão com inteiros e conversão de tipo em C/C++
Gabarito: letra E ( –6 ). O resultado final é obtido considerando que (unsigned int)(-9) converte -9 para um valor grande positivo (4294967287 em 32 bits), a divisão e multiplicação mantêm o valor alto, e a soma com 4 (convertido para unsigned) gera 4294967290, que, interpretado como signed, equivale a –6. A chave é entender o comportamento da conversão de negativos para unsigned e a aritmética de complemento de dois.
4294967287 / 2 → 2147483643 (divisão unsigned, trunca para zero).
2147483643 * 2 = 4294967286.
Soma: 4 + 4294967286 = 4294967290 (em unsigned).
Esse valor (0xFFFFFFFA) é interpretado como signed: –6.
17/4 = 1 (divisão inteira)
21×4 = 4
3(unsigned int)(-9) = 4294967287
44294967287/2 = 2147483643
52147483643×2 = 4294967286
64 + 4294967286 = 4294967290
7Interpretado como signed: -6
LEVEL · soulevel.com.br
Alternativas
Alternativa A — ❌ Incorreta (0)
Ocorreria se a segunda parte se anulasse, mas não é o caso.
Alternativa B — ❌ Incorreta (–2)
Resultado de um erro de interpretação (ex.: tratar divisão de -9/2 como –5 e depois cast).
Alternativa C — ❌ Incorreta (–4)
Possível se a divisão de -9/2 fosse –4 (truncamento em direção a zero) mas sem considerar o efeito do cast unsigned.
Alternativa D — ❌ Incorreta (+3)
Resultado de cálculos incorretos (ex.: 7/4 = 1.75 arredondado para 2, etc.).
Alternativa E — ✅ Correta ⟵ GABARITO
Conforme demonstrado, o valor final interpretado como signed é –6.
NÃO CAIA NESSA!
A banca explora a combinação de conversão de negativos para unsigned e a posterior interpretação do resultado como signed. Muitos candidatos esquecem que (unsigned int)(-9) gera um número enorme, e que a soma final precisa ser vista em complemento de dois. Lembre-se: em C/C++, a conversão de signed para unsigned é bem definida (aritmética modular), e a aritmética unsigned também é modular; ao final, se o contexto espera um signed, o bit pattern é reinterpretado.