int float conversion produit un avertissement?

C'est surprenant pour moi de voir que, même lorsque la valeur peut être convertie, int float conversion toujours donner un avertissement. Pourquoi est-ce?

int i = 0;
float f = 0; //warning here

//I thought this was an implicit conversion,
//meaning it is convertible with no warnings.
f = i;      //another warning here

L'avertissement est:

warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
Attribuer MAX INT valeur de type float et voir le résultat.
float f = 0.0 f; // 0 est un entier.
Elle donne le même message d'avertissement avec les deux f = MAXINT; et f = INT_MAX;
Je comprends que some_float = MAX_INT; ou some_float = some_int doit donner un avertissement. Cependant, pourquoi serait-il nécessaire pour 0?
float f = 0; est ok. Puisque c'est une valeur constante qui peut être représenté exactement, il ne devrait pas être un avertissement pour l'implicite int-à-flotteur de conversion. Mais, personnellement, je ferais float f = 0.0;, juste pour être plus explicite. (Et je serais probablement utiliser double moins qu'il y a une bonne raison pour utiliser float.)

OriginalL'auteur user103214 | 2011-10-15