Observe o código C# a seguir. namespace MyApplication { class Program { static void Main(string[] args) { for (int i = 0; --i < 5; i++) { Console.WriteLine(i); }}}} Assinale o conteúdo exibido no dispositivo de saída.
- A)O número -1 repetido indefinidamente.
Correta: o pre-decremento faz i virar -1 antes da comparacao, e o laço passa a imprimir -1 indefinidamente.
- B)Os números 0, 1, 2, 3, 4.
Errada: isso seria esperado em um for comum com i < 5, sem o --i na condicao.
- C)Os números 0, 1, 2, 3, 4 repetidos cinco vezes.
Errada: o laço nao percorre 0 a 4 cinco vezes; ele nem chega a esse padrao, porque a variavel é decrementada antes do teste.
- D)Os números 0, 1, 2, 3, 4, 5.
Errada: o valor 5 nao é exibido, pois o comando de saida imprime o i atual dentro do laço, que começa em -1.
- E)Os números 1, 2, 3, 4, 5.
Errada: o código nao faz contagem de 1 a 5; o decremento inicial altera totalmente a sequencia.
Gabarito: A
A questao explora um detalhe clássico de C#: a diferenca entre pre-decremento (--i) e pos-incremento (i++). No comando for, a parte do meio é testada antes de cada repeticao. Aqui, como a condicao e --i < 5, o valor de i é decrementado primeiro e so depois comparado. Partindo de i = 0, o primeiro teste vira -1 < 5, que é verdadeiro. Entao o Console.WriteLine(i) imprime -1. Em seguida, o i++ do for devolve i para 0. Na volta do loop, o --i acontece de novo, levando i para -1 outra vez. Resultado: a condicao segue verdadeira para sempre e o valor exibido é -1 repetidamente. O gabarito A esta correto porque o laço fica infinito imprimindo -1 a cada iteracao.