Udostępnij za pośrednictwem


for instrukcja (C++)

Wykonuje instrukcję wielokrotnie, dopóki warunek przestaje być prawdziwy. Aby uzyskać informacje na temat instrukcji opartej for na zakresie, zobacz Instrukcja oparta na for zakresie (C++). Aby uzyskać informacje na temat instrukcji C++/CLIfor each, zobacz infor each, .

Składnia

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

Uwagi

Użyj instrukcji for , aby utworzyć pętle, które muszą wykonywać określoną liczbę razy.

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

dla elementów pętli

Nazwa składni Po wykonaniu opis
init-expression Przed każdym innym elementem for instrukcji init-expression jest wykonywany tylko raz. Następnie kontrolka przekazuje 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 programu statement, w tym pierwszej iteracji. statement jest wykonywany tylko wtedy, gdy cond-expression daje wartość true (nonzero). 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 elementu statement. Po loop-expression wykonaniu zostanie obliczona cond-expression wartość . Zwykle jest używane do zwiększania indeksów pętli.

W poniższych przykładach pokazano różne sposoby używania 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: 01
}

init-expression i loop-expression może zawierać wiele instrukcji rozdzielonych przecinkami. 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ć lub dekrementować albo 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 kończy się, gdy breakwykonywana jest pętla , zwracana lub goto (do instrukcji oznaczonej for poza pętlą).statement Instrukcja continue w for pętli kończy tylko bieżącą iterację.

Jeśli cond-expression zostanie pominięty, zostanie uznana za true, a for pętla nie zakończy się bez breakelementu , returnlub goto w obrębie statement.

Chociaż trzy pola instrukcji for są zwykle używane do inicjowania, testowanie pod kątem zakończenia i zwiększanie, nie są one ograniczone do tych zastosowań. Na przykład poniższy kod wyświetla cyfry od 0 do 4. W tym przypadku statement jest to instrukcja null:

#include <iostream>
using namespace std;

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

for pętle i standardowa C++

Standard C++ mówi, że zmienna zadeklarowana w for pętli wykracza poza zakres po zakończeniu for pętli. Przykład:

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

Domyślnie w obszarze /Zezmienna zadeklarowana w for pętli pozostaje w zakresie do momentu for zakończenia otaczającego zakresu pętli.

/Zc:forScope Umożliwia standardowe zachowanie zmiennych zadeklarowanych w pętlach bez konieczności określania /Zawartości .

Można również użyć różnic for określania zakresu pętli, aby ponownie deklarować zmienne w następujący /Ze 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++ ) {}
}

To zachowanie dokładniej naśladuje standardowe zachowanie zmiennej zadeklarowanej for w pętli, co wymaga zadeklarowania zmiennych w for pętli w celu wyjścia z zakresu po zakończeniu pętli. Gdy zmienna jest zadeklarowana w for pętli, kompilator wewnętrznie promuje ją do zmiennej lokalnej w for otaczającym zakresie pętli. Jest ona promowana nawet wtedy, gdy istnieje już zmienna lokalna o tej samej nazwie.

Zobacz też

Instrukcje iteracji
Słowa kluczowe
while instrukcja (C++)
do-while instrukcja (C++)
Instrukcja oparta na for zakresie (C++)