Cela se produit parce que la boucle for
incrémente la variable avant de vérifier la condition de la boucle.
Voici le code avec la boucle for
réécrite comme une boucle while
:
#include<stdio.h>
void main()
{
int i;
i=0;
while(i!=12)
{
printf("%d\n",i);
i=12;
i++;
}
}
Et voici sa sortie (les premières lignes):
0
13
13
13
...
Chaque fois que dans la boucle, le code définit i
à 12, puis l'incrémente immédiatement à 13 avant de vérifier la condition et de redémarrer la boucle. La boucle se terminera seulement quand i==12
, ainsi elle fonctionnera pour toujours.
'i ++' est excécuté à la fin de la boucle, donc je deviendrai 'i = 13' –
demandez-vous si (12 + 1) == 12 est toujours vrai. – WhozCraig
car après l'opération de boucle 'i ++' est exécuté, donc vous définissez 'i = 12' que vous l'incrémentez avec' i ++' et ensuite une nouvelle itération est effectuée qui vérifie si 'i! = 12' .. Je vous recommande, si vous ne Ne sachez pas exactement ce que fait le programme, utilisez le débogueur pour savoir ce qu'il fait. – Gondil