Alternativa C
Para resolver esta questão, devemos analisar a execução do comando de atribuição passo a passo, aplicando as regras de operadores pré-fixados (++variavel) e pós-fixados (variavel++) descritas no enunciado.
Análise do Código
O trecho de código é:
int estoque = 5, total;
total = ++estoque * 2 + estoque++;
Vamos decompor a execução da expressão total = ++estoque * 2 + estoque++;:
- Operador Pré-Fixado (
++estoque):
- Como é pré-fixado, a alteração ocorre antes da utilização do valor.
estoque muda de 5 para 6.- O valor utilizado na multiplicação é 6.
- **Multiplicação (
* 2):**
- Calculamos
6 * 2, resultando em 12.
- Operador Pós-Fixado (
estoque++):
- Como é pós-fixado, o valor original é utilizado primeiro, e a alteração ocorre depois.
- O valor atual de
estoque é 6. Portanto, o valor utilizado na soma é 6. - Imediatamente após o uso,
estoque sofre o incremento e passa de 6 para 7.
- Soma Final (
+):
- Agora temos os valores calculados:
12 + 6. - O resultado final é 18, que é atribuído à variável
total.
Avaliação das Afirmações
- I. O valor final de estoque é 7 ao término da instrução.
- Verdadeiro. O contador começou em 5, foi incrementado pelo
++estoque (ficando 6) e depois pelo estoque++ (ficando 7). - II. A expressão avaliada para total resulta no valor 18.
- Verdadeiro. A conta realizada foi $6 \times 2 + 6$, que resulta em $12 + 6 = 18$.
- III. O uso de parênteses em
(++estoque) alteraria a natureza do incremento de pré para pós-fixado. - Falso. Os parênteses servem para alterar a prioridade de avaliação ou agrupar termos, mas não mudam a natureza do operador.
++estoque continua sendo um operador de incremento pré-fixado mesmo dentro de parênteses.
Conclusão
Como as afirmações I e II estão corretas e a III está incorreta, a resposta certa é a letra C.