bearbecueLe 05/12/2010 à 14:38
si, visual te genere des warnings pour les casts implicites dans les deux sens. enfin, quand t'es en mode de warning maximal au moins. (et GCC probablement aussi, quand t'active les bons flags). mais autant ca peut etre utile de l'avoir pour les conversions float->int, autant pour les int->float, c'est juste mega-casse couilles...
et c'est pas tout a fait ca pour les valeurs representables. c'est plutot les valeurs entieres dont la representation binaire a une distance entre le premier et le dernier bit a 1 superieure a 24 bits.
par exemple, ces nombres la en binaire:
1011110100011101000000000000000000000000
1011110100011101000111110000000000000000
(40 bits significatifs au total, distance=16 pour le premier, et =24 pour le second) sont representables en float sans perte de precision quelconque
par contre ceux la:
1011110100011101000111111000000000000000
1011110100011101000111110000000000100000
une fois convertis en float, seront tronques en
1011110100011101000111110000000000000000
simplement parcequ'il n'y a que 23 bits de mantisse dans un float 32 bits IEEE754 + un bit de poids fort implicite qui vaut toujours 1. (et que l'exposant sur 8 bits est un exposant sur la base 2, donc on peut shifter ces 23 bits de mantisse de +127 ou -127 bits autour de zero).