for
-Anweisung (C++)
Führt eine Anweisung wiederholt aus, bis die Bedingung false ergibt. Informationen zur bereichsbasierten for
Anweisung finden Sie unter Range-based for
statement (C++). Informationen zur C++/CLI-Anweisung for each
finden Sie unter for each
, in
.
Syntax
for (
init-expression
;
cond-expression
;
loop-expression
)
statement
Hinweise
Verwenden Sie die for
Anweisung, um Schleifen zu erstellen, die eine bestimmte Anzahl von Malen ausführen müssen.
Die for
Anweisung besteht aus drei optionalen Teilen, wie in der folgenden Tabelle dargestellt.
für Schleifenelemente
Syntaxname | Bei Ausführung | Beschreibung |
---|---|---|
init-expression |
Vor einem anderen Element der for Anweisung init-expression wird nur einmal ausgeführt. Das Steuerelement wird dann an cond-expression übergeben. |
Wird häufig zum Initialisieren von Schleifenindizes verwendet. Es können Ausdrücke oder Deklarationen enthalten sein. |
cond-expression |
Vor der Ausführung jeder Iteration von statement , einschließlich der ersten Iteration. statement wird nur ausgeführt, wenn cond-expression den Wert „True“ (ungleich 0 (null)) annimmt. |
Ein Ausdruck, der einen Ganzzahltyp oder einen Klassentyp ergibt, der über eine eindeutige Konvertierung in einen Ganzzahltyp verfügt. Wird normalerweise zum Testen von Beendigungskriterien für Schleifen verwendet. |
loop-expression |
Am Ende jeder Iteration von statement . Nachdem loop-expression ausgeführt wird, wird cond-expression ausgewertet. |
Wird normalerweise zum Erhöhen von Schleifenindizes verwendet. |
Die folgenden Beispiele zeigen unterschiedliche Methoden zur Verwendung der for
Anweisung.
#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
und loop-expression
können mehrere durch Kommas getrennte Anweisungen enthalten. Beispiel:
#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
*/
Der loop-expression
kann erweitert oder verringert werden oder in anderer Weise geändert werden.
#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
Eine for
Schleife wird beendet, goto
wenn eine oder mehrere break
beschriftete Anweisungen außerhalb der for
Schleife statement
ausgeführt werden. Eine continue
Anweisung in einer for
Schleife beendet nur die aktuelle Iteration.
Wenn cond-expression
sie nicht angegeben wird, wird sie berücksichtigt true
, und die for
Schleife wird nicht ohne ein break
, return
oder goto
innerhalb statement
der Schleife beendet.
Obwohl die drei Felder der for
Anweisung normalerweise für die Initialisierung, tests für die Beendigung und die Inkrementierung verwendet werden, sind sie nicht auf diese Verwendungen beschränkt. Beispielsweise gibt der folgende Code die Zahlen 0 bis 4 aus. In diesem Fall handelt es sich bei statement
um die null-Anweisung:
#include <iostream>
using namespace std;
int main()
{
int i;
for( i = 0; i < 5; cout << i << '\n', i++){
;
}
}
for
Schleifen und C++-Standard
Der C++-Standard gibt an, dass eine in einer for
Schleife deklarierte Variable nach Beendigung der for
Schleife außerhalb des Gültigkeitsbereichs liegt. Beispiel:
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
Standardmäßig wird unter /Ze
einer Variablen, die in einer for
Schleife deklariert ist Standard im Bereich deklariert, bis der for
eingeschlossene Bereich der Schleife endet.
/Zc:forScope
ermöglicht das Standardverhalten von Variablen, die für Schleifen deklariert sind, ohne angeben /Za
zu müssen.
Es ist auch möglich, die Bereichsunterschiede der for
Schleife zu verwenden, um Variablen /Ze
wie folgt neu zu definieren:
// 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++ ) {}
}
Dieses Verhalten imitiert das Standardverhalten einer Variablen, die in einer for
Schleife deklariert ist, wodurch Variablen, die in einer for
Schleife deklariert sind, aus dem Bereich entfernt werden müssen, nachdem die Schleife abgeschlossen wurde. Wenn eine Variable in einer for
Schleife deklariert wird, wird sie vom Compiler intern zu einer lokalen Variablen im eingeschlossenen Bereich der for
Schleife höherstuft. Sie wird höhergestuft, auch wenn bereits eine lokale Variable mit demselben Namen vorhanden ist.
Siehe auch
Iterationsanweisungen
Schlüsselwörter
while
-Anweisung (C++)
do-while
-Anweisung (C++)
Bereichsbasierte for
Anweisung (C++)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für