paulo1205
(usa Ubuntu)
Enviado em 14/04/2020 - 15:24h
No código que você postou, faltou fechar as chaves.
De modo geral, no entanto, as duas construções a seguir são quase equivalentes.
for(expr1; expr2; expr3)
comando_ou_bloco
expr1;
while(expr2){
comando_ou_bloco
expr3;
}
expr1 é uma expressão de inicialização,
expr2 é a expressão de controle de repetição e
expr3 geralmente recalcula alguns dos valores usados em
expr2.
comando_ou_bloco pode ser um comando simples (nesse caso, terminado com um ponto e vírgula (“
;”)) ou um bloco de múltiplos comandos, delimitados por chaves (“
{” e “
}”).
O “quase” acima referido é por causa do comando
continue, que faz com que o laço de repetição pule para a próxima iteração. Quando usado dentro de um laço com
for, o
continue sempre provoca a avaliação de
expr3 antes de reavaliar
expr2. Com
while, se você quiser que
expr3 seja avaliada antes de passar para a próxima iteração, tem de fazer isso explicitamente antes do
continue.
EDIT (2020/04/15 05:45): Existem outras diferenças. Com
for, qualquer uma das três expressões pode ser omitida, ou seja: não é necessária uma inicialização explícita, como
expr1, nem uma expressão explícita de atualização de condições, como
expr3, e, na ausência de uma condição de teste para continuar com as repetições como
expr2, o laço de repetição simplesmente continua indefinidamente, até que alguma coisa dentro de
comando_ou_bloco explicitamente o interrompa (por exemplo, um
break, um
goto para fora do bloco de repetição, um
return ou uma chamada a uma função de abandono ou exceção, tal como
exit(),
abort() ou
longjmp()). Com
while,
expr1 e
expr3 não fazem parte da construção em si, então não precisam estar presentes, mas
expr2 não pode ser vazia. Para simular o efeito de
expr2 omitida no
for, a condição de repetição do
while tem de estar presente e tem de ter um valor interpretado como verdadeiro (geralmente se usa "
while(1)" em C, ou "
while(true)" em C++).
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)