for istruzione (C++)

Esegue ripetutamente un'istruzione finché la condizione non diventa false. Per informazioni sull'istruzione basata sull'intervallofor, vedere Istruzione basata su for intervallo (C++). Per informazioni sull'istruzione C++/CLI for each , vedere for each, in.

Sintassi

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

Osservazioni:

Usare l'istruzione for per costruire cicli che devono eseguire un numero specificato di volte.

L'istruzione for è costituita da tre parti facoltative, come illustrato nella tabella seguente.

elementi ciclo for

Nome sintassi Quando viene eseguito Descrizione
init-expression Prima di qualsiasi altro elemento dell'istruzione for , init-expression viene eseguito una sola volta. Il controllo passa a cond-expression. Spesso utilizzato per inizializzare gli indici del ciclo. Può contenere espressioni o dichiarazioni.
cond-expression Prima dell'esecuzione di ogni iterazione di statement, inclusa la prima iterazione. statement viene eseguito solo se cond-expression restituisce true (diverso da zero). Un'espressione che restituisce un tipo di classe o un tipo integrale con una conversione non ambigua a un tipo integrale. Normalmente utilizzato per verificare i criteri di terminazione del ciclo For.
loop-expression Alla fine di ogni iterazione di statement. Dopo l'esecuzione di loop-expression, viene valutato cond-expression. Normalmente utilizzato per incrementare gli indici del ciclo.

Gli esempi seguenti illustrano diversi modi per usare l'istruzione 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 e loop-expression possono contenere più istruzioni separate da virgole. Ad esempio:

#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 può essere incrementato o ridotto oppure modificato in altri modi.

#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

Un for ciclo termina quando viene eseguita un'istruzione break, restituita o goto (a un'istruzione etichettata all'esterno statement del for ciclo). Un'istruzione continue in un for ciclo termina solo l'iterazione corrente.

Se cond-expression viene omesso, viene considerato truee il for ciclo non terminerà senza , breakreturno goto all'interno statementdi .

Anche se i tre campi dell'istruzione vengono normalmente usati per l'inizializzazione, i test per la for terminazione e l'incremento, non sono limitati a questi usi. Ad esempio, il codice seguente consente di stampare i numeri da 0 a 4. In questo caso, statement è l'istruzione Null:

#include <iostream>
using namespace std;

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

for cicli e standard C++

Lo standard C++ indica che una variabile dichiarata in un for ciclo esce dall'ambito al termine del for ciclo. 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 /Zeuna variabile dichiarata in un for ciclo rimane nell'ambito fino al for termine dell'ambito di inclusione del ciclo.

/Zc:forScope abilita il comportamento standard delle variabili dichiarate in per i cicli senza dover specificare /Za.

È anche possibile usare le differenze di ambito del for ciclo per rideclare le variabili in /Ze come indicato di seguito:

// 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 comportamento simula più da vicino il comportamento standard di una variabile dichiarata in un for ciclo, che richiede che le variabili dichiarate in un for ciclo escino dall'ambito al termine del ciclo. Quando una variabile viene dichiarata in un for ciclo, il compilatore lo promuove internamente a una variabile locale nell'ambito for di inclusione del ciclo. Viene alzata di livello anche se è già presente una variabile locale con lo stesso nome.

Vedi anche

Istruzioni di iterazione
Parole chiave
while istruzione (C++)
do-while istruzione (C++)
Istruzione basata su for intervallo (C++)