for
Instrução (C)
A instrução for
permite repetir uma instrução ou uma instrução composta por um número especificado de vezes. O corpo de uma instrução for
é executado zero ou mais vezes até que uma condição opcional se torne falsa. Você pode usar expressões opcionais na instrução for
para inicializar e alterar valores durante a execução da instrução for
.
Sintaxe
iteration-statement
:
for
(
init-expression
opt ;
cond-expression
opt ;
loop-expression
opt )
statement
A execução de uma instrução for
ocorre da seguinte maneira:
O parâmetro
init-expression
, se houver, é avaliado. Especifica a inicialização do loop. Não há nenhuma restrição ao tipoinit-expression
.O parâmetro
cond-expression
, se houver, é avaliado. Essa expressão deve ter tipo aritmético ou ponteiro. Ele é avaliado antes de cada iteração. Três resultados são possíveis:Se
cond-expression
fortrue
(diferente de zero),statement
será executado. Em seguida,loop-expression
, se houver, será avaliado. O parâmetroloop-expression
é avaliado após cada iteração. Não há nenhuma restrição sobre o tipo. Os efeitos colaterais serão executados na ordem. Em seguida, o processo é iniciado novamente com a avaliação decond-expression
.Se
cond-expression
está omitido,cond-expression
é considerado true e a execução continua exatamente conforme descrito no parágrafo anterior. Uma instruçãofor
sem um argumentocond-expression
só termina quando uma instruçãobreak
oureturn
dentro do corpo da instrução é executada, ou quando umgoto
(para uma instrução rotulada fora do corpo da instruçãofor
) é executado.Se
cond-expression
éfalse
(0), a execução da instruçãofor
termina e o controle passa para a próxima instrução no programa.
Uma instrução for
também termina quando uma instrução break
, goto
ou return
dentro do corpo da instrução é executada. Uma instrução continue
em um loop for
faz com que loop-expression
seja avaliado. Quando uma instrução break
é executada dentro de um loop for
, loop-expression
não é avaliado nem executado. Esta instrução
for( ; ; )
é a maneira comum de gerar um loop infinito, que só pode ser encerrado com uma instrução break
, goto
ou return
.
Exemplo
Este exemplo ilustra a instrução for
:
// c_for.c
int main()
{
char* line = "H e \tl\tlo World\0";
int space = 0;
int tab = 0;
int i;
int max = strlen(line);
for (i = 0; i < max; i++ )
{
if ( line[i] == ' ' )
{
space++;
}
if ( line[i] == '\t' )
{
tab++;
}
}
printf("Number of spaces: %i\n", space);
printf("Number of tabs: %i\n", tab);
return 0;
}
Saída
Number of spaces: 4
Number of tabs: 2