dla instrukcji (C++)
Wykonuje instrukcji i wyrażenie loop do momentu, aż wyrażenie z przewodem przestaje być prawdziwy.Aby uzyskać informacje dotyczące oparte na zakresie dla instrukcji, zobacz Range-based for — instrukcja (C++).
for ( init-expression ; cond-expression ; loop-expression )
statement
Uwagi
Użycie for instrukcji do konstruowania pętli, które należy wykonać określoną liczbę razy.
for Instrukcji składa się z trzech części opcjonalne, jak pokazano w poniższej tabeli.
dla elementów pętli
Składnia nazwy |
Po wykonaniu |
Zawartość |
---|---|---|
init wyrażenie |
Przed innych elementów dla instrukcji.init wyrażenie jest uruchamiane tylko raz.Następnie sterowanie przechodzi do wyrażenie z przewodem. |
Często używany do zainicjowania indeksy pętli.Może zawierać wyrażenia lub deklaracje (tylko w języku C++). |
wyrażenie z przewodem |
Przed wykonaniem każdej iteracji instrukcji, łącznie z pierwszej iteracji.Instrukcja jest wykonywany tylko wtedy, gdy wyrażenie z przewodem ma wartość true (niezerowej). |
Wyrażenie, którego wynikiem jest typem całkowitym lub typ klasy, który ma jednoznaczne konwersji na typ integralny.Normalnie używane do testowania dla kryteriów zakończenia pętli. |
wyrażenie LOOP |
Na końcu każdej iteracji instrukcji.Po wyrażenie loop jest wykonywana, wyrażenie z przewodem sprawdzana jest zgodność. |
Zwykle jest używana do przyrostu indeksy pętli. |
Na przykład:
// for_statement1.cpp
#include <stdio.h>
int main() {
int i;
for ( i = 0 ; i < 2 ; i++ )
printf_s( "\n%d\n",i );
}
Poprzednie for pętla jest równoważna następującej while pętli:
// for_statement2.cpp
#include <stdio.h>
int main()
{
int i = 0;
while ( i < 2 )
printf_s( "%d\n", i++ );
}
init wyrażenie i wyrażenie loop może zawierać wiele instrukcji rozdzielonych przecinka operator.Na przykład:
// for_statment3.cpp
#include <stdio.h>
int main()
{
int i, j;
for ( i = 5, j = 10 ; i + j < 20; i++, j++ )
printf_s( "\n i + j = %d", (i + j) );
}
A for pętla kończy działanie, gdy podziału, powrócić, lub Przejdź do (oznaczona jako instrukcja poza dla pętli) w ramach instrukcji jest wykonywany.A kontynuować instrukcji w for pętla kończy działanie tylko bieżącej iteracji.
Jeśli wyrażenie z przewodem jest pominięty, uważa się wartość true i dla pętli nie zakończy się bez break, return, lub goto w instrukcji.
Za pomocą pętli wygodnym sposobem określania nieskończone for instrukcja jest:
for( ; ; )
{
// Statements to be executed.
}
Chociaż trzy pola z for instrukcja są zwykle używane do inicjowania, badania na zakończenie, i zwiększając tę wartość, nie są ograniczone do tych zastosowań.Na przykład poniższy kod wyświetla cyfry od 0 do 4.W takim przypadku instrukcji jest deklaracja wartości null:
// for_statement4.cpp
#include <stdio.h>
int main()
{
int i;
for( i = 0; i < 5; printf_s("%d\n", i), i++)
;
}
dla pętli i C++ Standard
C++ standard mówi, że Zmienna zadeklarowana w for pętla się wykroczenia poza zakres po for kończy się w pętli.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 w obszarze /Ze, Zmienna zadeklarowana w for pętli pozostaje w zakresie aż do for pętli jest załączając zakresu.
/Zc:forScope umożliwia zachowanie standardowe zmienne zadeklarowane w pętle for bez konieczności określ /Za.
Istnieje również możliwość korzystania z zakresu różnice między for pętli do redeclare zmienne w obszarze /Ze się następujące zmiany:
// 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++ ) {}
}
Większym stopniu naśladuje to zachowanie standardowe Zmienna zadeklarowana w for pętla, która wymaga zmienne zadeklarowane w for pętli do wykroczenia poza zakres, po zakończeniu pętli.Kiedy zmienna jest zadeklarowana w for pętli, kompilator wewnętrznie promuje ją do zmiennej lokalnej, w for pętli jest załączając zakresu, nawet jeśli zmienna lokalna o tej samej nazwie już istnieje.