Sdílet prostřednictvím


for – příkaz (C++)

Spustí příkaz opakovaně, dokud podmínka nebude nepravda. Informace o příkazu založeném for na rozsahu naleznete v tématu Příkaz založený na for rozsahu (C++). Informace o příkazu C++/CLI for each naleznete v tématu for each, in.

Syntaxe

for ( init-expression ; cond-expression ; loop-expression )
statement

Poznámky

for Příkaz použijte k vytvoření smyček, které musí spustit zadaný početkrát.

Příkaz for se skládá ze tří volitelných částí, jak je znázorněno v následující tabulce.

pro elementy smyčky

Název syntaxe Při spuštění Popis
init-expression Před jakýmkoli jiným prvkem for příkazu init-expression se provede pouze jednou. Ovládací prvek pak předá cond-expression. Často se používá k inicializaci indexů smyčky. Může obsahovat výrazy nebo deklarace.
cond-expression Před spuštěním každé iterace , včetně první iterace statement. statement je spuštěna pouze v případě, že cond-expression se vyhodnotí jako true (nenulová). Výraz, jehož výsledkem je integrální typ nebo typ třídy, která má jednoznačný převod na integrální typ. Obvykle se používá k testování kritérií pro ukončení smyčky.
loop-expression Na konci každé iterace .statement Po loop-expression spuštění cond-expression se vyhodnotí. Obvykle se používá pro zvýšení indexu smyčky.

Následující příklady ukazují různé způsoby použití for příkazu.

#include <iostream>
using namespace std;

int main() {
    // The counter variable can be declared in the init-expression.
    for (int i = 0; i < 2; i++ ){
       cout << i;
    }
    // Output: 01
    // The counter variable can be declared outside the for loop.
    int i;
    for (i = 0; i < 2; i++){
        cout << i;
    }
    // Output: 01
    // These for loops are the equivalent of a while loop.
    i = 0;
    while (i < 2){
        cout << i++;
    }
    // Output: 01
}

init-expression a loop-expression může obsahovat více příkazů oddělených čárkami. Příklad:

#include <iostream>
using namespace std;

int main(){
    int i, j;
    for ( i = 5, j = 10 ; i + j < 20; i++, j++ ) {
        cout << "i + j = " << (i + j) << '\n';
    }
}
/* Output:
    i + j = 15
    i + j = 17
    i + j = 19
*/

loop-expression můžou být přírůstkové nebo dekrementované nebo změněné jinými způsoby.

#include <iostream>
using namespace std;

int main(){
for (int i = 10; i > 0; i--) {
        cout << i << ' ';
    }
    // Output: 10 9 8 7 6 5 4 3 2 1
    for (int i = 10; i < 20; i = i+2) {
        cout << i << ' ';
    }
}
// Output: 10 12 14 16 18

Smyčka for se ukončí, když breakse provede smyčka , return nebo goto (do označeného příkazu mimo smyčkufor).statement Příkaz continue ve for smyčce ukončí pouze aktuální iteraci.

Pokud cond-expression je vynechán, považuje se to za truesmyčku for a smyčka se neukončí bez break, returnnebo goto v statementrámci .

I když se tři pole for příkazu obvykle používají k inicializaci, testování ukončení a zvýšení, nejsou omezena na tato použití. Následující kód například tiskne čísla 0 až 4. V tomto případě statement je příkaz null:

#include <iostream>
using namespace std;

int main()
{
    int i;
    for( i = 0; i < 5; cout << i << '\n', i++){
        ;
    }
}

for smyčky a standardní jazyk C++

Standard C++ říká, že proměnná deklarovaná ve for smyčce po skončení smyčky přejde mimo rozsah for . Příklad:

for (int i = 0 ; i < 5 ; i++) {
   // do something
}
// i is now out of scope under /Za or /Zc:forScope

Ve výchozím nastavení v části /Ze, proměnná deklarovaná ve for smyčce zůstává v oboru, dokud for smyčka uzavření oboru končí.

/Zc:forScope umožňuje standardní chování proměnných deklarovaných ve smyčce, aniž by bylo nutné zadávat /Za.

Je také možné použít rozdíly v rozsahu for smyčky k opětovnému zaeklarování proměnných /Ze následujícím způsobem:

// for_statement5.cpp
int main(){
   int i = 0;   // hidden by var with same name declared in for loop
   for ( int i = 0 ; i < 3; i++ ) {}

   for ( int i = 0 ; i < 3; i++ ) {}
}

Toto chování přesněji napodobuje standardní chování proměnné deklarované ve for smyčce, což vyžaduje, aby proměnné deklarované ve for smyčce po dokončení smyčky přešly mimo rozsah. Když je proměnná deklarována ve for smyčce, kompilátor ji interně podporuje na místní proměnnou v for uzavřeném oboru smyčky. Upřednostní se i v případě, že už existuje místní proměnná se stejným názvem.

Viz také

Příkazy iterace
Klíčová slova
while – příkaz (C++)
do-while – příkaz (C++)
Příkaz založený na for rozsahu (C++)