pour l'instruction (C++)
Exécution de l'instruction et la boucle- expression à plusieurs reprises jusqu'à ce que la cond- expression soit false.Pour plus d'informations sur le basé sur une plage pour l'instruction, consultez Basé sur une plage, instruction (C++).
for ( init-expression ; cond-expression ; loop-expression )
statement
Notes
Utilisez l'instruction d' for pour construire des boucles qui doivent exécuter un nombre spécifié de fois.
L'instruction d' for se compose de trois parties facultatives, comme indiqué dans le tableau suivant.
pour les éléments de boucle
Nom de syntaxe |
En cas de exécution |
Sommaire |
---|---|---|
init-expression |
Avant tout autre élément de l'instruction de for .l'init- expression est exécuté une seule fois.Le contrôle passe alors à la cond- expression. |
Souvent utilisé pour initialiser des index de boucle.Elle peut contenir des expressions ou des déclarations (C++ uniquement). |
cond-expression |
Avant l'exécution de chaque itération de l'instruction, y compris la première itération.l'instruction est exécutée uniquement si la cond- expression prend la valeur true (une valeur différente de zéro). |
Une expression qui correspond à un type intégral ou un type de classe qui a une conversion non équivoque à un type intégral.En principe utilisé pour déterminer les critères de boucle- arrêt. |
boucle-expression |
À la fin de chaque itération de l' instruction.Une fois la boucle- expression soit exécutée, la cond- expression est évaluée. |
En principe utilisé pour incrémenter des index de boucle. |
Par exemple :
// for_statement1.cpp
#include <stdio.h>
int main() {
int i;
for ( i = 0 ; i < 2 ; i++ )
printf_s( "\n%d\n",i );
}
La boucle précédente d' for équivaut à la boucle suivante pour while :
// for_statement2.cpp
#include <stdio.h>
int main()
{
int i = 0;
while ( i < 2 )
printf_s( "%d\n", i++ );
}
l'init- expression et la boucle- expression peuvent contenir plusieurs instructions séparées par opérateur virgule.Par exemple :
// 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) );
}
Une boucle d' for se termine lorsque break, retour, ou goto (à une instruction étiquetée hors de la boucle de for ) dans l'instruction est exécuté.Une instruction d' continuez dans une boucle d' for termine uniquement l'itération actuelle.
Si la cond- expression est omis, il est considéré comme la valeur true et la boucle de for ne se terminera pas sans break, return, ou goto dans l'instruction.
Un moyen pratique de spécifier une boucle infinie à l'aide de l'instruction d' for est :
for( ; ; )
{
// Statements to be executed.
}
Bien que les trois champs de l'instruction d' for soient normalement utilisés pour l'initialisation, testant l'arrêt, et incrémentant, ils ne sont pas à accès à ces utilisations.Par exemple, le code suivant imprime les nombres 0 à 4.Dans ce cas, l' instruction est l'instruction null :
// for_statement4.cpp
#include <stdio.h>
int main()
{
int i;
for( i = 0; i < 5; printf_s("%d\n", i), i++)
;
}
pour les boucles et la norme C++
La norme C++ indique qu'une variable déclarée dans une boucle d' for sortira de la portée après la fin de la boucle d' for .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 d' for reste dans la portée jusqu'à ce que la portée englobante de la boucle d' for termine.
/Zc:forScope active le comportement standard des variables déclarées dans des boucles sans devoir spécifier /Za.
Il est également possible d'utiliser les différences de portée de la boucle d' for aux variables de redéclarer 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 reproduit davantage le comportement standard d'une variable déclarée dans une boucle d' for, qui requiert des variables déclarées dans une boucle d' for pour sortir de la portée après la boucle soit effectuée.Lorsqu'une variable est déclarée dans une boucle d' for, le compilateur l'encourage en interne à une variable locale dans la portée englobante de la boucle d' for même s'il existe déjà une variable locale avec le même nom.