Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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ž break
se 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 true
smyčku for
a smyčka se neukončí bez break
, return
nebo goto
v statement
rá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++)