Observe o código C# a seguir. namespace MyApplication { ...
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.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A - O número -1 repetido indefinidamente.
Para compreender a questão, é necessário ter um bom entendimento sobre as estruturas de repetição em programação, especificamente o laço for na linguagem C#. Este laço é composto por três componentes principais: a inicialização, a condição de continuação e o incremento ou decremento.
No código apresentado, temos a seguinte estrutura de laço for:
for (int i = 0; --i < 5; i++) { Console.WriteLine(i); }
O que torna este laço incomum é a expressão --i < 5 na condição de continuação do laço. O operador -- antes da variável i é chamado de decremento pré-fixado, o que significa que i é decrementado antes de ser avaliado na condição.
Na primeira iteração, a variável i é inicializada com 0. Entretanto, antes de verificar se i < 5, a operação --i é executada, resultando em i valendo -1. Como -1 ainda é menor que 5, o bloco de código dentro do for é executado, e o número -1 é impresso.
Após a execução do bloco de código, a terceira parte do laço for, o incremento, é executado, que é i++. Isso incrementa i de volta para 0. Contudo, na próxima verificação de condição, i é novamente decrementado para -1 antes da comparação, o que faz com que a condição permaneça verdadeira. Este processo se repete indefinidamente, resultando em uma impressão contínua do número -1.
Portanto, a alternativa correta é a letra A, pois o código entrará em um loop infinito imprimindo o número -1 indefinidamente.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo