Analise o código a seguir, escrito na linguagem de programaç...

Próximas questões
Com base no mesmo assunto
Ano: 2018 Banca: COTEC Órgão: Câmara de Rio Pardo de Minas - MG
Q1208279 Programação
Analise o código a seguir, escrito na linguagem de programação C. #include <stdio.h> void sub (int *x, int y){ *x = 3; y = *x + 1; } int main() { int a, b, z; a = 1; b = 2; sub(&a,b); z = a + b; printf ("%d",z); return 0; } O valor de Z, a ser mostrado na saída padrão, é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - 5.

A questão requer o entendimento de como funções e passagem de parâmetros funcionam na linguagem C, além de conceitos como variáveis, atribuição de valores, ponteiros e aritmética básica. Vamos destrinchar o código passo a passo para entender o resultado.

A função main() inicia declarando três variáveis inteiras a, b, e z, e atribui os valores 1 e 2 às variáveis a e b, respectivamente. A função sub() é então chamada com os argumentos &a (o endereço de memória da variável a) e b.

Dentro da função sub(), o parâmetro *x é um ponteiro para um inteiro, o que significa que ele aponta para o endereço de uma variável inteira e pode modificar o valor nesse endereço. O parâmetro y é uma cópia do valor de b devido à passagem por valor. Essa distinção é crucial.

A linha *x = 3; altera o valor da variável que está no endereço apontado por *x, que é a variável a na função main(). Portanto, após a execução dessa linha, a passa a ter o valor 3.

Seguidamente, y = *x + 1; altera o valor de y para ser igual a 4 (3 + 1), mas isso não afeta a variável b na função main(), já que y é uma cópia independente de b.

De volta na função main(), a linha z = a + b; soma os valores atuais de a (que agora é 3) com b (que permaneceu como 2). Logo, z recebe o valor 5 (3 + 2).

O comando printf("%d",z); imprime o valor de z na saída padrão, que é 5. É por isso que a alternativa C é a correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Na chamada da função sub(), a variável "a" é passada por referência e "b" por valor.

Logo, o que for feito com "x" dentro de sub() estará afetando a referência "a" declarada no main.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo