Ed
há 4 meses
Vamos analisar o código fornecido para entender quais valores serão impressos pela função `printf`. 1. Definição da função: ```c int funcao(int a, int *b) { a++; // a passa a ser 5 (4 + 1) *b = a * 2; // *b (que é y) passa a ser 10 (5 * 2) return b + 5; // retorna o endereço de b + 5 (não o valor) } ``` 2. Chamada da função: ```c z = funcao(x, &y); // x = 4, y = 8 ``` - `x` é passado como `a`, então `a` começa com 4. - `y` é passado como `&y`, então `b` é um ponteiro para `y`. 3. Valores após a execução da função: - `a` se torna 5. - `*b` (ou seja, `y`) se torna 10. - O retorno da função é `b + 5`, que é o endereço de `y` + 5, mas isso não é o que queremos para a impressão. 4. Valores finais: - `x` continua sendo 4. - `y` agora é 10. - `z` recebe o endereço de `y` + 5, mas isso não é relevante para a impressão. 5. Impressão: ```c printf("Id %d %d\n", x, y, z); ``` Aqui, `x` é 4 e `y` é 10. O valor de `z` não é impresso corretamente, pois não é o valor que queremos. Portanto, os valores impressos serão: - `x` = 4 - `y` = 10 - O valor de `z` não é relevante para a impressão correta. Assim, a alternativa correta é: A. 4 10 15.
Já tem uma conta?
Ao continuar, você aceita os Termos de Uso e Política de Privacidade