‘continue’ não faz o que você imagina em loops ‘do…while’

Por causa de construções do tipo:

while (i < 10)
{
  if (!foo(i))
    continue;
  bar(&i);
}

Onde, se a função foo() retornar zero o código salta para o início do loop. Isso funciona do mesmo jeito num loop com for, mas e num do…while?

do {
  if (!foo(i))
    continue;
  bar(&i);
} while (i < 10);

Será que, enquanto foo() retornar zero, o loop será executado de novo? A resposta é: depende do valor de i!

O que continue faz é reavaliar a condição do loop (i < 10) e, se for satisfeita, o loop continua. Funciona da mesma forma que no while

Cuidado com continue!

Anúncios