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 breakbeschriftete 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, returnoder goto innerhalb statementder 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 /Zeeiner 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 /Zazu 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++)