Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ismétlődően hajt végre egy utasítást, amíg a feltétel hamissá nem válik. A tartományalapú for utasításról további információt a Tartományalapú utasítás (C++) című fortémakörben talál. A C++/CLI for each utasítással kapcsolatos információkért lásd: for each. in
Szemantika
for (init-expression;cond-expression;loop-expression)
statement
Megjegyzések
Az utasítással for olyan hurkokat hozhat létre, amelyeknek meghatározott számú alkalommal kell végrehajtaniuk.
Az for utasítás három választható részből áll, az alábbi táblázatban látható módon.
hurokelemek esetén
| Szintaxis neve | Végrehajtáskor | Leírás |
|---|---|---|
init-expression |
Az utasítás init-expression bármely más eleme előtt a for rendszer csak egyszer hajtja végre. A vezérlő ezután átmegy a következőre cond-expression: . |
Gyakran használják ciklusindexek inicializálására. Tartalmazhat kifejezéseket vagy deklarációkat. |
cond-expression |
Az egyes iterációk statementvégrehajtása előtt, beleértve az első iterációt is.
statement csak akkor lesz végrehajtva, ha cond-expression igaz értékre (nemzero) van kiértékelve. |
Olyan kifejezés, amely egy integráltípusra vagy egy olyan osztálytípusra értékel ki, amely egyértelmű átalakítással rendelkezik egy integráltípusra. Általában ciklusvégzítési feltételek tesztelésére használják. |
loop-expression |
Az egyes iterációk statementvégén. A végrehajtás cond-expression után loop-expression a rendszer kiértékeli. |
Általában a ciklusindexek növekményére szolgálnak. |
Az alábbi példák az utasítás használatának különböző módjait for mutatják be.
#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 és loop-expression több, vesszővel elválasztott utasítást tartalmazhat. Például:
#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 növekményes vagy csökkenő, illetve más módon módosítható.
#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
A for hurkok akkor fejeződnek be, amikor egy break, visszatérés vagy goto (a for cikluson kívüli címkével ellátott utasításra) statement kerül sor. Egy continue ciklusban lévő for utasítás csak az aktuális iterációt szünteti meg.
Ha cond-expression nincs megadva, akkor a rendszer figyelembe veszi true, és a for hurok nem fejeződik be breakanélkül, hogy a , returnvagy goto azon belül lenne statement.
Bár az utasítás három mezője for általában inicializáláshoz, a leállítás teszteléséhez és a növekményhez használatos, ezek nem korlátozódnak ezekre a célokra. Az alábbi kód például a 0 és 4 között lévő számokat nyomtatja ki. Ebben az esetben statement a null értékű utasítás:
#include <iostream>
using namespace std;
int main()
{
int i;
for( i = 0; i < 5; cout << i << '\n', i++){
;
}
}
for ciklusok és a C++ Standard
A C++ szabvány szerint egy ciklusban for deklarált változónak a ciklus vége után ki kell lépnie a for hatókörből. Például:
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
Alapértelmezés szerint /Zea ciklusban for deklarált változó a hatókörben marad, amíg a for ciklus belefoglaló hatóköre véget nem ér.
/Zc:forScope lehetővé teszi a ciklusokban deklarált változók szokásos viselkedését anélkül, hogy meg kellene adni /Za.
A ciklus hatóköri különbségeit is használhatja a for változók /Ze újraklarálásához az alábbiak szerint:
// 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++ ) {}
}
Ez a viselkedés jobban utánozza a ciklusban for deklarált változók szokásos viselkedését, ami megköveteli, hogy a for ciklusban deklarált változók a ciklus befejezése után kikerüljenek a hatókörből. Ha egy változót ciklusban for deklarálnak, a fordító belsőleg előlépteti azt egy helyi változóra a for hurok belefoglaló hatókörében. Akkor is előlépteti, ha már létezik egy azonos nevű helyi változó.
Lásd még
Iterációs utasítások
Kulcsszavak
while utasítás (C++)
do-while utasítás (C++)
Tartományalapú for utasítás (C++)