Sdílet prostřednictvím


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-expressionopt opt loop-expression; ) ; cond-expression statement

for Provedení příkazu pokračuje následujícím způsobem:

  1. Vyhodnocuje se hodnota init-expression, pokud existuje. Určuje inicializaci smyčky. Neexistuje žádné omezení pro typ .init-expression

  2. 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 je true (nenulová), statement provede se; vyhodnocuje loop-expressionse , pokud existuje. Vyhodnotí se loop-expression po každé iteraci. Neexistuje žádné omezení pro jeho typ. Vedlejší účinky se spustí v pořadí. Proces pak začne znovu vyhodnocením cond-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říkaz for bez argumentu cond-expression se ukončí pouze v break případě, že se provede příkaz nebo return příkaz v těle příkazu nebo když se provede příkaz goto (do označeného příkazu mimo for text příkazu).

    • Pokud cond-expression je false (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ž breakse provede příkaz , gotonebo 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, gotonebo 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

Viz také

Výkazy