Re: question de base sur la boucle for
Citation:
Envoyé par BnY
la condition de rebouclage est j<10 (strictement inférieur) et pourtant on affiche tout de même la dernière ligne où j vaut 10. Est-ce normal, et dans ce cas pourquoi ?
Ce n'est pas normal. Pourquoi, parce que le compilateur est légèrement stupide.
J'ai fais le test sur MSVC toolkit 2003, PellesC, VC++ Express 2005, OpenWatcom 1.4 et même tinyCC (oui, j'ai poussé l'investigation loin car on m'avait déjà montré une erreur de ce style :p) pour voir que tous s'arrêtaient avant que j>= 10, normal quoi.
Il faudrait voir le code assembleur généré par le programme compilé. AMHA, il s'agit d'une erreur dans du style j = j+i effectué après le test de rebouclage.
En "méta-assembleur".
Code:
1 2 3 4 5 6 7 8 9 10 11
|
mov [i],0
mov [j],0
boucle:
inc [i] ; i++
cmp [j], 10
jge fin ; => si j>=10 => fin
add [j], [i] ; j+=i
// printf...
jmp boucle
fin: |