for-Anweisung (C++)
Führt eine Anweisung wiederholt aus, bis die Bedingung false ergibt. Informationen zur bereichsbasierten for-Anweisung finden Sie unter Bereichsbasiert für Anweisung (C++).
for ( init-expression ; cond-expression ; loop-expression )
statement;
Hinweise
Verwenden Sie die for-Anweisung, zum Erstellen von Schleifen, die eine angegebene Anzahl von Wiederholungen ausführen müssen.
Die for-Anweisung besteht aus drei optionalen, in der folgenden Tabelle dargestellten, Teilen.
for-Schleifenelemente
Syntaxname |
Ausführung bei |
Beschreibung |
---|---|---|
init-expression |
Vor jedem anderen Element der for-Anweisung wird init-expression 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 verschiedene Verwendungsmöglichkeiten 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: 012
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, wenn break, return oder goto (an eine Anweisung mit Bezeichnung außerhalb der for-Schleife) innerhalb von statement ausgeführt wird. Mit einer continue-Anweisung in einer for-Schleife wird nur die aktuelle Iteration beendet.
Wenn cond-expression ausgelassen wird, gilt sie als "true", und die for-Schleife wird nicht ohne ein break, return oder goto innerhalb der statement beendet.
Obwohl die drei Felder der for-Anweisung normalerweise zum Initialisieren, Testen auf Beendigung und Inkrementieren verwendet werden, sind sie nicht auf dieser Verwendungsmöglichkeiten begrenzt. 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 der C++-Standard
Der C++-Standard besagt, dass eine in einer for - Schleife deklarierte Variable den Gültigkeitsbereich nach Beenden der for - Schleife verlassen soll. Beispiel:
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
Standardmäßig bleibt unter /Ze eine in einer for - Schleife deklarierte Variable bis zum Beenden der for - Schleife des einschließenden Bereichs im Bereich.
/Zc:forScope ermöglicht Standardverhalten der in for-Schleifen deklarierten Variablen, ohne dass /Za angegeben werden muss.
Es ist auch möglich, die Bereichsunterschiede der for-Schleife wie folgt zum erneuten Deklarieren der Variablen unter /Ze verwenden:
// 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++ ) {}
}
Dies imitiert das Standardverhalten einer Variablen genauer, die in einer for-Schleife deklariert wurde, für die zum Verlassen des Bereichs nach dem Ausführen der Schleife Variablen erforderlich sind, die in einer for-Schleife deklariert werden. Beim Deklarieren einer Variablen in einer for-Schleife, stuft der Compiler sie intern zu einer lokalen Variablen im einschließenden Bereich der for-Schleife auf. Dies geschieht auf dann, wenn bereits eine lokale Variable mit dem gleichen Namen vorhanden ist.