for
Příkaz (C)
Příkaz for
umožňuje opakovat příkaz nebo složený příkaz zadaný početkrát. Tělo for
příkazu se provede nulou nebo vícekrát, dokud se volitelná podmínka nepravdí. Volitelné výrazy v příkazu for
můžete použít k inicializaci a změně hodnot během for
provádění příkazu.
Syntaxe
iteration-statement
:
for
(
init-expression
opt opt loop-expression
;
)
;
cond-expression
statement
for
Provedení příkazu pokračuje následujícím způsobem:
Vyhodnocuje se hodnota
init-expression
, pokud existuje. Určuje inicializaci smyčky. Neexistuje žádné omezení pro typ .init-expression
Vyhodnocuje se hodnota
cond-expression
, pokud existuje. Tento výraz musí mít aritmetický typ nebo typ ukazatele. Vyhodnotí se před každou iterací. Možné jsou tři výsledky:Pokud
cond-expression
jetrue
(nenulová),statement
provede se; vyhodnocujeloop-expression
se , pokud existuje. Vyhodnotí seloop-expression
po každé iteraci. Neexistuje žádné omezení pro jeho typ. Vedlejší účinky se spustí v pořadí. Proces pak začne znovu vyhodnocenímcond-expression
.Pokud
cond-expression
je vynechán,cond-expression
považuje se za pravdivý a provádění pokračuje přesně tak, jak je popsáno v předchozím odstavci. Příkazfor
bez argumentucond-expression
se ukončí pouze vbreak
případě, že se provede příkaz neboreturn
příkaz v těle příkazu nebo když se provede příkazgoto
(do označeného příkazu mimofor
text příkazu).Pokud
cond-expression
jefalse
(0), spuštěnífor
příkazu se ukončí a řízení předá dalšímu příkazu v programu.
Příkaz for
také ukončí, když break
se provede příkaz , goto
nebo return
příkaz v těle příkazu. Příkaz continue
ve smyčce for
způsobí loop-expression
vyhodnocení. Když se break
příkaz spustí uvnitř for
smyčky, loop-expression
nevyhodnotí se ani nespustí. Tento příkaz
for( ; ; )
je vlastní způsob, jak vytvořit nekonečné smyčky, které lze ukončit pouze pomocí break
, goto
nebo return
příkazu.
Příklad
Následující příklad znázorňuje příkaz 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;
}
Výstup
Number of spaces: 4
Number of tabs: 2