Considere o código a seguir, utilizando a linguagem de prog...
#include <stdio.h> int main() { int x = 1, y, z; y = ++x; z = y++; y = 2; printf("%%%d, %d, %d%%", x, y, z); return 0; }
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - Será impresso: %2, 2, 2%.
Vamos analisar cada linha do código para entendermos a saída e por que a alternativa C é a correta:
Na primeira linha de código com a variável, temos a declaração e atribuição da variável int x = 1, que significa que a variável x começa com o valor 1.
Na linha seguinte, y = ++x, o operador de incremento ++ antes da variável x indica um incremento prévio, ou seja, x é incrementado antes de seu valor ser atribuído a y. Então, x passa a ser 2 e y também recebe o valor 2.
Logo depois, z = y++, o operador de incremento ++ após a variável y indica um incremento posterior, então o valor atual de y (que é 2) é atribuído a z, e depois y é incrementado para 3. No entanto, a linha seguinte imediatamente redefine y para 2 com y = 2, sem influenciar os valores de x ou z.
Finalmente, a linha com printf("%%%d, %d, %d%%", x, y, z) imprime os valores das variáveis. As sequências %% no início e no final são escapamentos para imprimir o caractere % literalmente. Assim, os valores que serão impressos entre os sinais de porcentagem são os valores atuais de x, y e z, que são 2, 2 e 2, respectivamente. Portanto, a saída correta será %2, 2, 2%.
É importante notar que entender a diferença entre o incremento prévio (++x) e posterior (x++) é fundamental para resolver esse tipo de questão. Além disso, o candidato precisa estar atento aos detalhes da função printf, como a maneira correta de escapar caracteres especiais como o percentual.
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
Para imprimir na tela o símbolo "%" sem que o mesmo seja lido como parte do código, é só escrevê-lo duas vezes:
"%%%d"
duas vezes para a impressão, uma vez para o código.
na tela aparecerá somente %2.
@Barbara Fonseca
não entendi poderia me explicar?
1). primeiro, você teria que fazer o método chinês para saber que todos os valores vão ser igual 2
2). saber o conceito de pré-incremento e pós incremento
3). mesmo não sabendo o lance dos "percentis", chutaria a letra C
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo