Instruction for
(C)
L'instruction for
vous permet de répéter une instruction ou une instruction composée un nombre de fois spécifié. Le corps d'une instruction for
est exécuté zéro ou plusieurs fois jusqu'à ce qu'une condition facultative ait la valeur false. Vous pouvez utiliser des expressions facultatives dans l'instruction for
pour initialiser et modifier des valeurs pendant l'exécution de l'instruction for
.
Syntaxe
iteration-statement
:
for
(
init-expression
opt ;
cond-expression
opt ;
loop-expression
opt )
statement
L'exécution d'une instruction for
continue comme suit :
init-expression
, le cas échéant, est évalué. Spécifie l’initialisation de la boucle. Il n’existe aucune restriction quant au type deinit-expression
.cond-expression
, le cas échéant, est évalué. Cette expression doit avoir un type arithmétique ou pointeur. Il est évalué avant chaque itération. Trois résultats sont possibles :Si
cond-expression
a la valeurtrue
(différente de zéro),statement
est exécuté. Ensuite , le cas échéant,loop-expression
est évalué. Theloop-expression
est évalué après chaque itération. Il n’existe aucune restriction quant à son type. Les effets secondaires s'exécuteront dans l'ordre. Le processus commence ensuite de nouveau avec l'évaluation decond-expression
.Si
cond-expression
est omis,cond-expression
est considéré comme true, et l'exécution reprend exactement comme décrit dans le paragraphe précédent. Une instructionfor
sans argumentcond-expression
se termine uniquement lorsqu'une instructionbreak
oureturn
dans le corps d'instruction est exécutée ou lorsqu'une instructiongoto
(vers une instruction étiquetée extérieure au corps d'instructionfor
) est exécutée.Si
cond-expression
a la valeurfalse
(0), l'exécution de l'instructionfor
se termine et le contrôle passe à l'instruction suivante du programme.
Une instruction for
se termine également lorsqu'une instruction break
, goto
ou return
appartenant au corps d'instruction est exécutée. Une instruction continue
dans une boucle for
entraîne l'évaluation de loop-expression
. Lorsqu’une instruction break
est exécutée dans une boucle for
, loop-expression
n’est ni évalué, ni exécuté. Cette instruction
for( ; ; )
est la méthode courante pour produire une boucle infinie qui ne peut être quittée qu’avec une instruction break
, goto
, ou return
.
Exemple
L'exemple suivant illustre l'instruction for
:
// c_for.c
int main()
{
char* line = "H e \tl\tlo World\0";
int space = 0;
int tab = 0;
int i;
int max = strlen(line);
for (i = 0; i < max; i++ )
{
if ( line[i] == ' ' )
{
space++;
}
if ( line[i] == '\t' )
{
tab++;
}
}
printf("Number of spaces: %i\n", space);
printf("Number of tabs: %i\n", tab);
return 0;
}
Sortie
Number of spaces: 4
Number of tabs: 2