Questão FC374762
Considere o programa escrito em linguagem C: #include<stdio.h> #define teste ++v int v=1; int x=1; void funcao1() { int v=0; x=0; v=x+teste; printf("%d ", v); } int main() { v=v*2;
Linguagens de Programação
Instituto Consulplan · 2021
Considere o programa escrito em linguagem C:
#include<stdio.h>
#define teste ++v
int v=1;
int x=1;
void funcao1() {
int v=0;
x=0;
v=x+teste;
printf("%d ", v);
}
int main() {
v=v*2;
funcao1();
printf("%d ", teste+x);
return 0;
}
Considerando o código-fonte, assinale, a seguir, a saída do programa.
- 0 0
- 1 2
- 1 3
- 1 4
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
O macro #define teste ++v substitui cada ocorrência de teste por ++v, atuando sobre a variável v visível no escopo corrente.
No início: globais v = 1, x = 1. Em main, \(v = v*2\) torna a v global igual a 2.
Ao entrar em funcao1 há uma v local = 0 (sombreamento). A instrução \(x = 0\) altera a x global para 0. Em \(v = x + teste\) temos \(v = x + ++v\): o ++v aplica‑se à v local (0→1), logo \(v = 0 + 1 = 1\). O primeiro printf imprime 1.
De volta ao main, a v global ainda é 2 e x global é 0. Em printf("%d ", teste+x) o teste é \(++v\) sobre a v global (2→3) e soma com x=0, resultando em 3. Saída final: 1 3.
Conteúdo do catálogo FC Concursos · Atualizado em