Udostępnij za pośrednictwem


for — instrukcja (C++)

Wykonuje instrukcję wielokrotnie, dopóki warunek przestaje być prawdziwy.Aby uzyskać informacje o instrukcji for opartej na zakresie, zobacz Range-based for — instrukcja (C++).

for ( init-expression ; cond-expression ; loop-expression ) 
    statement;

Uwagi

Należy używać instrukcji for do konstruowania pętli, które muszą być wykonane określoną liczbę razy.

Instrukcja for składa się z trzech opcjonalnych części, jak pokazano w poniższej tabeli.

Elementy pętli for

Nazwa składni

Kiedy wykonywane

Opis

init-expression

Przed innym elementem z instrukcji for, init-expression jest wykonywane tylko raz.Następnie sterowanie przechodzi do cond-expression.

Często używane do zainicjowania indeksów pętli.Może zawierać wyrażenia lub deklaracje.

cond-expression

Przed wykonaniem każdej iteracji statement, łącznie z pierwszą iteracją.statement jest wykonywana tylko wtedy, gdy cond-expression zwraca wartość true (niezerową).

Wyrażenie obliczane do typu całkowitoliczbowego lub typu klasy, która ma jednoznaczną konwersję na typ całkowitoliczbowy.Normalnie używane do sprawdzania kryteriów zakończenia pętli for.

loop-expression

Na końcu każdej iteracji statement.Po wykonaniu loop-expression jest obliczane cond-expression.

Zwykle jest używane do zwiększania indeksów pętli.

Poniższe przykłady pokazują różne sposoby wykorzystania instrukcji for.

#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 i loop-expression mogą zawierać wiele instrukcji, oddzielonych przecinkami.Na przykład:

#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 można zwiększać, zmniejszać lub modyfikować w inny sposób.

#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

Pętla for zostaje zakończona, gdy wewnątrz statement wykonywane jest break, return lub goto (do oznaczonej instrukcji poza pętlą for).Instrukcja continue w pętli for kończy tylko bieżącą iterację.

Jeśli cond-expression jest pominięte, uważa się je za spełnione i pętla for nie zostanie zakończona bez break, return lub goto wewnątrz statement.

Chociaż trzy pola instrukcji for są zwykle używane do inicjowania, sprawdzania warunku zakończenia i inkrementacji, nie są ograniczone do tych zastosowań.Na przykład poniższy kod wyświetla cyfry od 0 do 4.W tym przypadku statement jest pustą instrukcją:

#include <iostream>
using namespace std;

int main()
{
    int i;
    for( i = 0; i < 5; cout << i << '\n', i++){
        ;
    }
}

Pętle for i standard C++

Standard C++ mówi, że zmienna zadeklarowana w pętli for powinna wyjść poza zakres po zakończeniu pętli for.Na przykład:

for (int i = 0 ; i < 5 ; i++) {
   // do something
}
// i is now out of scope under /Za or /Zc:forScope

Domyślnie pod /Ze, zmienna zadeklarowana w pętli for pozostaje w zakresie aż do zakończenia otaczającego zakresu pętli for.

/Zc:forScope włącza standardowe zachowanie zmiennych zadeklarowanych w pętlach for bez konieczności określania /Za.

Istnieje również możliwość użycia różnic zakresu pętli for do ponownego zadeklarowania zmiennych pod /Ze w następujący sposób:

// 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++ ) {}
}

Jest to bardziej ścisłe naśladowanie standardowego zachowania zmiennej zadeklarowanej w pętli for, które wymaga, aby zmienne zadeklarowane w pętli for wyszły poza zakres po zakończeniu pętli.Kiedy zmienna jest zadeklarowana w pętli for, kompilator wewnętrznie awansuje ją do zmiennej lokalnej w otaczającym zakresie pętli for, nawet jeśli zmienna lokalna o tej samej nazwie już istnieje.

Zobacz też

Informacje

Instrukcje iteracji (C++)

Słowa kluczowe języka C++

while — instrukcja (C++)

do-while — instrukcja (C++)

Range-based for — instrukcja (C++)