FC ConcursosFC Concursos

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.

  1. 0 0
  2. 1 2
  3. 1 3
  4. 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

Continue aprendendo