Ed
há 9 meses
Vamos analisar o código fornecido e entender o que acontece passo a passo. 1. Definição da função: ```c int funcao(int a, int *b) { a++; *b = a * 2; return b + 5; } ``` - A função `funcao` recebe um inteiro `a` e um ponteiro para inteiro `b`. - `a++` incrementa `a` em 1. - `*b = a * 2` atribui a `*b` o valor de `a` multiplicado por 2. - `return b + 5` retorna o endereço de `b` mais 5, o que não é o que queremos, pois estamos interessados no valor. 2. Função `main`: ```c int main() { int x = 4, y = 8, z; z = funcao(x, &y); printf("%d %d %d\n", x, y, z); return 0; } ``` - `x` é inicializado com 4 e `y` com 8. - A função `funcao` é chamada com `x` e o endereço de `y`. 3. Execução da função: - `a` recebe 4 (valor de `x`). - `a++` faz `a` ser 5. - `*b = a * 2` faz `y` (que é `*b`) ser 10 (5 * 2). - O retorno `b + 5` não é relevante para o valor impresso, mas `z` receberá um valor que não é o que queremos. 4. Valores finais: - `x` permanece 4. - `y` agora é 10. - `z` receberá um valor que não é o que queremos, mas o que importa é que `printf` imprimirá os valores de `x`, `y` e `z`. Agora, vamos ver as opções: A) 5 10 15 B) 4 16 15 C) 5 16 21 Os valores que serão impressos são: - `x` = 4 - `y` = 10 - `z` = (valor que não é relevante, mas não é 15, 16 ou 21) Portanto, a alternativa correta que representa os valores impressos pela função `printf` é: B) 4 10 z (mas como não está entre as opções, a resposta correta é que a opção B é a que mais se aproxima, mas não está correta). A resposta correta não está listada nas opções.
Já tem uma conta?
Ao continuar, você aceita os Termos de Uso e Política de Privacidade