Instruction for
(C++)
Exécute une instruction à plusieurs reprises jusqu'à ce que la condition soit false. Pour plus d’informations sur l’instruction for
basée sur une plage, consultez Instruction for
basée sur la plage (C++). Pour plus d’informations sur l’instruction C++/CLI for each
, consultez for each
, in
.
Syntaxe
for (
init-expression
;
cond-expression
;
loop-expression
)
statement
Notes
Utilisez l’instruction for
pour créer des boucles à exécuter un certain nombre de fois.
L’instruction for
se compose de trois parties facultatives, comme indiqué dans le tableau suivant.
pour les éléments de la boucle
Nom de la syntaxe | Au moment de l’exécution | Description |
---|---|---|
init-expression |
init-expression est exécuté une seule fois, avant tous les autres éléments de l’instruction for . Le contrôle passe alors à cond-expression . |
Souvent employé pour initialiser des index de boucle. Elle peut contenir des expressions ou des déclarations. |
cond-expression |
Avant l'exécution de chaque itération de statement , y compris la première itération. statement est exécuté uniquement si cond-expression a la valeur true (valeur différente de zéro). |
Expression qui correspond à un type intégral ou à un type de classe avec une conversion non ambiguë en type intégral. Normalement utilisée pour déterminer les critères d'arrêts de boucles. |
loop-expression |
À la fin de chaque itération de statement . loop-expression est évalué après l'exécution de cond-expression . |
Normalement utilisée pour incrémenter les index de boucle. |
Les exemples suivants montrent diverses façons d’utiliser l’instruction 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
et loop-expression
peuvent contenir plusieurs instructions séparées par des virgules. Par exemple :
#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
peut être incrémenté ou décrémenté, ou autrement modifié.
#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
Une boucle for
s’achève lorsqu’un break
, return ou goto
(vers une instruction étiquetée extérieure à la boucle for
) contenue dans statement
est exécutée. Une instruction continue
contenue dans une boucle for
termine uniquement l’itération en cours.
Si cond-expression
elle est omise, elle est considérée comme true
et la boucle for
ne se termine pas sans un break
, return
ou goto
dans statement
.
Bien que les trois champs de l’instruction for
soient normalement utilisés pour l’initialisation, les tests d’arrêt et l’incrémentation, ils ne sont pas limités à ces applications. Par exemple, le code suivant affiche les nombres 0 à 4. Dans ce cas, statement
est l'instruction null :
#include <iostream>
using namespace std;
int main()
{
int i;
for( i = 0; i < 5; cout << i << '\n', i++){
;
}
}
Boucles for
et Standard C++
Selon la norme C++, une variable déclarée dans une boucle for
passe hors de portée lorsque la boucle for
est terminée. Par exemple :
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
Par défaut, sous /Ze
, une variable déclarée dans une boucle for
reste dans l’étendue jusqu’à ce que l’étendue englobante de la boucle for
soit terminée.
/Zc:forScope
active le comportement standard des variables déclarées dans des boucles, sans besoin de spécifier /Za
.
Il est également possible d’utiliser les différences d’étendue de la boucle for
pour redéclarer des variables sous /Ze
comme suit :
// 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++ ) {}
}
Ce comportement reproduit plus fidèlement le comportement standard d’une variable déclarée dans une boucle for
. Cette dernière requiert des variables déclarées dans une boucle for
pour sortir de la portée lorsque la boucle est terminée. Lorsqu’une variable est déclarée dans une boucle for
, le compilateur la convertit en interne en variable locale dans la étendue englobante de la boucle for
. Il est promu même s’il existe déjà une variable locale du même nom.
Voir aussi
Instructions d’itération
Mots clés
Instruction while
(C++)
Instruction do-while
(C++)
Instruction for
basée sur la plage (C++)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour