Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2025

ProgramaçãoLinguagens de programação
Código
qg472056
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2025
Nível
Médio
Cargo
Programador
Considerando o seguinte programa, escrito na linguagem C, qual alternativa apresenta os valores corretos das variáveis a, b, c após a execução?#include <stdio.h> #include <string.h> void calcular(int *x, int *y, int *z) { ++*x; *++y; *z++; } main() { int a = 2; int b = 2; int c = 2; calcular(&a, &b, &c); printf("%d %d %d", a, b, c); }
  1. A2 2 2
  2. B3 2 2
  3. C3 2 3
  4. D3 3 2
  5. E3 3 3
Revelar gabarito e comentário

GabaritoB — 3 2 2

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”.

Linguagem C – Operadores com Ponteiros

Gabarito: letra B. A função calcular recebe os endereços de a, b e c. Dentro dela, ++*x incrementa o valor apontado por x (a vira 3); *++y incrementa o ponteiro y (não o valor) e depois dereferencia, sem efeito sobre b; *z++ usa o valor antigo do ponteiro (aponta para c) e descarta a leitura, sem alterar c. Portanto, após a execução, a=3, b=2, c=2.

  1. 1++*xa = 3
  2. 2*++yb = 2 (ponteiro incrementado)
  3. 3*z++c = 2 (ponteiro incrementado)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que todas as variáveis permanecem 2. Ignora que ++*x incrementa o valor de a para 3.

Alternativa B — ✅ Correta ⟵ GABARITO

a é incrementado para 3; b e c permanecem 2 porque as expressões *++y e *z++ alteram apenas o ponteiro, não o valor apontado.

Alternativa C — ❌ Incorreta

Sugere a=3, b=2, c=3. Erro: *z++ não altera c; o incremento pós-fixado atua sobre o ponteiro z, não sobre o valor.

Alternativa D — ❌ Incorreta

Sugere a=3, b=3, c=2. Erro: *++y incrementa o ponteiro, mas o valor de b não é modificado.

Alternativa E — ❌ Incorreta

Sugere todas as variáveis iguais a 3. Desconsidera que apenas a é alterada.

NÃO CAIA NESSA!

A banca explora a diferença entre ++*x (incrementa o valor apontado) e *++y / *z++ (incrementam o ponteiro, não o valor). Lembre-se: ++ e * têm mesma precedência e associam da direita para a esquerda; já o pós-fixado tem maior precedência que o unário.

Gabarito: letra B.

Link permanente: /questoes/qg472056