Bonjour à tous,
bon j'ai un problème qui me tarode. En codant, je suis resté bloqué un long moment sur une égalité qui ne produisait pas le résultat attendue, et j'ai remarqué qu'en réécrivant cette même égalité exactement de la même manière, hors de ma boucle (valeurs absolument identiques), cela produisait un résultat différent.
Je peux donc résoudre mon problème facilement, mais je voudrais comprendre pourquoi le résultat est différent ?
Voilà mon code :
***Version 1
Dans cette version, on NE RENTRE PAS dans la boucle selon l'ordi la condition du for est FAUSSE (en fait elle est vraie si on vérifie de tête).
Output : step = 0;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int i = 0; int step = 0; for(; (float)(powf(10.0f, -1.0f*((float)step+1.0f))*((float)i+1.0f))>=0.1f ; step++);
***Version 2
Dans cette version, on RENTRE dans la boucle selon l'ordi la condition de boucle est VRAIE.
Output : step = 1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int i = 0; int step = 0; float conditionValeur = (float)(powf(10.0f, -1.0f*((float)step+1.0f))*((float)i+1.0f)); for(; conditionValeur>=0.1f ; step++) { //réévaluation de "conditionValeur" }
Je comprends pas du tout pourquoi.
Quelqu'un aurait une idée ???
Bonne soirée à tous.
Partager