Questão nº 24
Questão de Tecnologia da Informação · FCC TRT23 2022 (nº 24)
Considere o programa em C abaixo.
#include <stdio.h>
int main() {
int y, *p, x;
y = 0;
p = &y;
x = *p;
x += 10;
++(*p);
--x;
(*p) += x;
printf ("y = %i\n", y);
return 0;
}
Ao ser compilado e executado em condições ideais, a saída do programa é:
- A`y = 9`
- B`y = 0`
- C`y = 10` (alternativa correta)
- D`y = 1`
- E`y = 11`
Resposta comentada
Gabarito Alternativa C
Ponteiros em C são variáveis especiais que guardam o endereço de memória de outras variáveis, permitindo que você acesse e altere o valor dessas variáveis de forma indireta. O operador & (endereço de) é usado para obter o endereço de uma variável, e o operador * (desreferência) é usado para acessar o valor que está no endereço apontado pelo ponteiro.
- (A) Incorreta: Esta alternativa seria a resposta se o aluno esquecesse que a operação
++(*p)incrementa o valor dey. Seynão fosse incrementado para1nessa etapa, ele permaneceria0, e a última operação(*p) += x(ouy += x) resultaria emy = 0 + 9 = 9. Armadilha: O distrator mais tentador é ignorar ou subestimar o efeito de operações que usam o ponteiro desreferenciado (*p) para modificar a variável original (y). - (B) Incorreta: Esta alternativa seria a resposta se
ynunca fosse modificado após sua inicialização. No entanto,yé modificado por++(*p)e(*p) += x. - (C) Correta: O programa executa as seguintes etapas:
y = 0;//yé 0.p = &y;//paponta paray.x = *p;//xrecebe o valor dey, entãoxé 0.x += 10;//xse torna 10.++(*p);// O valor apontado porp(que éy) é incrementado.yse torna 1.--x;//xé decrementado.xse torna 9.(*p) += x;// O valor apontado porp(que éy) recebey + x. Então,y = 1 + 9 = 10.
A saída final éy = 10.
- (D) Incorreta: Esta alternativa seria a resposta se apenas a operação
++(*p)afetasseye a última operação(*p) += xfosse ignorada ou mal interpretada. - (E) Incorreta: Não há um caminho lógico para
yatingir o valor 11 com as operações dadas.
Fonte: FCC TRT23 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.