per l'istruzione (C++)
Esegue ripetutamente l'istruzione e la ciclo- espressione fino a cond-expression non è false.Per informazioni su basato su intervallo per l'istruzione, vedere Istruzione for basata su intervallo (C++).
for ( init-expression ; cond-expression ; loop-expression )
statement
Note
Utilizzare l'istruzione di for per costruire i cicli che devono eseguire un numero specificato di volte.
L'istruzione di for costituita da tre parti facoltative, come illustrato nella tabella seguente.
per gli elementi del ciclo
Nome della sintassi |
Una volta eseguito |
Contenuto |
---|---|---|
init-espressione |
Prima di qualsiasi altro elemento dell'istruzione for.il init- espressione viene eseguita solo una volta.Il controllo passa quindi a cond- espressione. |
Spesso utilizzato per inizializzare gli indici del ciclo.Può contenere espressioni o dichiarazioni C++ (solo). |
cond-espressione |
Prima dell'esecuzione di ogni iterazione dell'istruzione, inclusa la prima iterazione.l'istruzione viene eseguito solo se il cond- espressione restituisce true (diverso da zero). |
Un'espressione che restituisce un tipo classe o di tipo integrale con una conversione non ambigua a un tipo integrale.Generalmente utilizzato per verificare i criteri di ciclo- chiusura. |
ciclo-espressione |
Alla fine di ogni iterazione dell'istruzione.Dopo la ciclo- espressione viene eseguita, il cond- espressione valutata. |
Utilizzato in genere per incrementare gli indici del ciclo. |
Ad esempio:
// for_statement1.cpp
#include <stdio.h>
int main() {
int i;
for ( i = 0 ; i < 2 ; i++ )
printf_s( "\n%d\n",i );
}
Il ciclo di for precedente è equivalente al seguente ciclo di while :
// for_statement2.cpp
#include <stdio.h>
int main()
{
int i = 0;
while ( i < 2 )
printf_s( "%d\n", i++ );
}
init- l'espressione e di ciclo- espressione possono contenere istruzioni separati da operatore virgola.Ad esempio:
// 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) );
}
Un ciclo di for termina quando interruzione, ritorno, o di avanzamento (a un'istruzione contrassegnato al di fuori del ciclo forinterno dell'statement viene eseguita.Un'istruzione di continuare in un ciclo di for termina solo l'iterazione corrente.
Se il cond- espressione viene omessa, viene considerato true e il ciclo for non terminerà senza break, return, o goto all'interno di un'istruzione.
Un modo pratico per specificare un ciclo infinito utilizzando l'istruzione di for è:
for( ; ; )
{
// Statements to be executed.
}
Sebbene i tre campi dell'istruzione di for vengano in genere utilizzati per l'inizializzazione, il testing della terminazione e incrementando, non sono limitati a questi utilizzare.Ad esempio, il seguente codice visualizza i numeri da 0 a 4.In questo caso, l'istruzione è l'istruzione null:
// for_statement4.cpp
#include <stdio.h>
int main()
{
int i;
for( i = 0; i < 5; printf_s("%d\n", i), i++)
;
}
per i cicli e lo standard C++
Lo standard C++ indica che una variabile dichiarata in un ciclo di for uscirà dall'ambito dopo il ciclo di for termina.Ad esempio:
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
Per impostazione predefinita, in /Ze, una variabile dichiarata in un ciclo di for rimane nell'ambito fino all'ambito che lo contiene il ciclo di for non termina.
/Zc: forScope abilita il comportamento standard delle variabili dichiarate in per i cicli senza la necessità di specificare /Za.
È anche possibile utilizzare le differenze di definizione del ciclo di for alle variabili a ridichiarare in /Ze come segue:
// 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++ ) {}
}
Questo corrisponde strettamente al comportamento standard di una variabile dichiarata in un ciclo di for, che richiede le variabili dichiarate in un ciclo di for per uscire di ambito dopo che il ciclo viene completato.Quando una variabile viene dichiarata in un ciclo di for, il compilatore internamente lo promuove a una variabile locale nell'ambito che lo contiene il ciclo di for anche se esiste già una variabile locale con lo stesso nome.