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 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour