Quelqu'un peut-il expliquer ce comportement?GCC compile erreur de division de temps
test.c:
#include <stdio.h>
int main(void)
{
printf("%d, %d\n", (int) (300.6000/0.05000), (int) (300.65000/0.05000));
printf("%f, %f\n", (300.6000/0.05000), (300.65000/0.05000));
return 0;
}
$ gcc test.c
$ ./a.out
6012, 6012
6012.000000, 6013.000000
J'ai vérifié le code assembleur et il met à la fois les arguments de la première printf comme 6012, il semble y avoir un bug de compilation .
recherche de précision/arrondi –
S'il s'agissait d'une erreur de précision/d'arrondi, la deuxième ligne n'aurait-elle pas les deux comme 6012? Et comme je l'ai dit, il y a 6012 dans l'assembly pour la première ligne, donc le compilateur le calcule pendant la compilation. – kartikmohta
trouver un bug complier dans un tel morceau de code est très très très peu probable. – Naveen