for -Anweisung (C++)

Führt eine Anweisung wiederholt aus, bis die Bedingung falsch wird. 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

Bemerkungen

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. Wird häufig verwendet, um Schleifenindizes zu initialisieren. Sie kann Ausdrücke oder Deklarationen enthalten.
cond-expression Vor der Ausführung jeder Iteration von statement, einschließlich der ersten Iteration. statement wird nur ausgeführt, wenn cond-expression "true" (nonzero) ausgewertet wird. Ein Ausdruck, der einen integralen Typ oder einen Klassentyp auswertet, der eine eindeutige Konvertierung in einen integralen Typ aufweist. Wird normalerweise verwendet, um kriterien für die Schleifenbeendigung zu testen.
loop-expression Am Ende jeder Iteration von statement. Nach loop-expression der Ausführung cond-expression wird ausgewertet. Wird normalerweise zum Inkrementieren 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 kann 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
*/

loop-expression kann auf andere Weise erhöht oder erhöht oder 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. Der folgende Code druckt z. B. die Zahlen 0 bis 4. In diesem Fall statement ist 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 verbleibt unter /Zeeiner variablen, die in einer for Schleife deklariert wird, im Bereich, 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++)