Questão de Programação — Conceitos básicos de programação — FUNDATEC 2025
Programação›Conceitos básicos de programação
Código
qg472057
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2025
Nível
Médio
Cargo
Programador
O que acontece após executar o seguinte programa, escrito na linguagem C?int calcular() {static int x= 0;return x++;}main(){int i;int b =! 0;for (i= 1; i <= 3; i++) {printf("%d %d ", calcular(), b);}}
AImprime 0 0 0 0 0 0
BImprime 0 1 0 1 0 1
CImprime 0 1 1 1 2 1
DImprime 1 1 2 1 3 1
EAcusa erro de sintaxe
Revelar gabarito e comentário▾
GabaritoC — Imprime 0 1 1 1 2 1
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 – Comportamento de loops e static
Gabarito: letra C. O programa imprime, em cada iteração do laço for, o valor retornado por calcular() (que começa em 0 e incrementa a cada chamada, devido à variável static int x) e o valor de b, que é 1 (pois !0 equivale a 1). Assim, a saída é 0 1 1 1 2 1 , exatamente a opção C.
Alternativa A — ❌ Incorreta
Imprime 0 0 0 0 0 0. O erro está em considerar b como 0 ou que calcular() retorna sempre 0. Na verdade, !0 é 1 e a variável estática incrementa.
Alternativa B — ❌ Incorreta
Imprime 0 1 0 1 0 1. Esta alternativa supõe que b permanece 0 na primeira iteração ou que calcular() não retém valor (reinicia a cada chamada). O correto é que b é sempre 1 e x cresce.
Alternativa C — ✅ Correta ⟵ GABARITO
Sequência exata: calcular() retorna 0, 1, 2 sucessivamente e b é sempre 1. Portanto, 0 1 1 1 2 1 .
Alternativa D — ❌ Incorreta
Imprime 1 1 2 1 3 1. Esta alternativa parte do princípio de que x começa em 1 (como se o incremento fosse pré-incremento ou inicialização diferente). O static int x=0 garante que a primeira chamada retorna 0.
Alternativa E — ❌ Incorreta
Acusa erro de sintaxe. O programa não contém erros de sintaxe em C (aceita main() sem int implícito em compiladores não estritos, e a função calcular está declarada antes).
PEGA ESSA DICA!
Em questões de C, preste atenção a static em variáveis locais – elas mantêm o valor entre chamadas. Além disso, lembre-se que !0 é 1 (verdadeiro).