-
question de paranthèse?
Supposons que F soit une fonction
pourquoi quand je fais ca:
[CODE}
for (i = 0; i <1000; i++)
F((-0.5+double(i/999)));
[/CODE]
ca renvoie toujours le meme résultat (qui correspond à F(-0.5+0/999))
alors que quand je fais ca:
[CODE}
for (i = 0; i <1000; i++)
F((-0.5+double(i)/999));
[/CODE]
ca renvoie des résultats différents selon i (ce qui est ce que je cherche d'ailleurs)?
Merci
-
Dans l'expression : double(i/999), i/999 est évalué en premier.
On travaille sur des entiers, ainsi, i/999 = 0 car 0<=i<999 (dans ce cas ci, ça correspond à la partie entière de i/999. Donc double(0), ça fait 0.0 et tu as toujours le même résultat.
Avec l'expression double(i)/999. double(i) est de type double. Pour effectuer la division, 999 est également converti implicitement en double, et la division peut se réaliser dans le domaine des double (ce qui ne donnera plus 0 (sauf pour i=0)).
En C++, on prefère utiliser des opérateurs spécifiques pour réaliser les casts : voir http://c.developpez.com/faq/cpp/?pag...s#DIVERS_casts