Um programa de computador, ao efetuar apenas operações com i...
((7/4)*4) + (((unsigned int)(-9)/2)*2)
o seguinte resultado:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - –6.
1. Tema central da questão:
Esta questão aborda operações aritméticas com inteiros em programação, principalmente envolvendo divisão inteira e manipulação de tipos como unsigned int. Saber como as linguagens de programação (como C/C++) lidam com esses casos é essencial em concursos públicos de TI.
2. Teoria relevante:
Divisão inteira: quando dividimos inteiros, o resultado é também inteiro (parte decimal é descartada).
unsigned int: é um inteiro sem sinal, apenas valores positivos. Em C, se convertemos um número negativo para unsigned int, o valor é ajustado pelo complemento de dois. Por exemplo, (unsigned int)(-9) em um sistema de 32 bits fica igual a 4294967287 (pois 2³² – 9 = 4294967287).
Fonte: cppreference.com
3. Justificativa da alternativa correta:
Vamos analisar a expressão:
((7/4)*4) + (((unsigned int)(-9)/2)*2)
- 7/4 = 1 (divisão inteira)
- 1 * 4 = 4
- (unsigned int)(-9) = 4294967287
- 4294967287 / 2 = 2147483643 (divisão inteira)
- 2147483643 * 2 = 4294967286
- 4 + 4294967286 = 4294967290
Porém, se o resultado for armazenado em um int (valor com sinal), isso representa um número negativo em complemento de dois:
4294967290 - 4294967296 = -6
Por isso, a resposta é -6.
4. Por que as outras alternativas estão incorretas?
- A - 0: Desconsidera as operações de conversão e overflow.
- B - –2: Erro no cálculo do complemento de dois.
- C - –4: Falha ao somar corretamente os resultados parciais.
- D - +3: Resultado impossível por conta da magnitude do valor positivo após a conversão.
5. Estratégias de resolução:
• Leia cuidadosamente e destaque tipos de dados (int, unsigned int).
• Identifique operações inteiras (nunca haverá casas decimais).
• Lembre-se: converter para unsigned int pode gerar valores muito grandes que, ao voltar para signed, viram negativos!
• Atente-se para possíveis pegadinhas envolvendo conversão de tipos e overflow.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo