🎯 Saiba o que estudar

Avançado com Treinador a partir de R$ 0,76/dia

Um programa de computador, ao efetuar apenas operações com i...

Próximas questões
Com base no mesmo assunto
Q2523603 Programação
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: 
Alternativas

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