Parfois, je dois convertir d'une valeur entière non signée en float. Par exemple, mon moteur graphique prend un SetScale(float x, float y, float z)
avec des flottants et j'ai un objet qui a une certaine taille comme unsigned int
. Je veux convertir le non signé int en un flotteur pour mettre à l'échelle correctement une entité (l'exemple est très spécifique mais j'espère que vous obtenez le point).Int ou Unsigned Int pour flotter sans avoir d'avertissement
Maintenant, ce que je fais habituellement est:
unsigned int size = 5;
float scale = float(size);
My3DObject->SetScale(scale , scale , scale);
Est-ce une bonne pratique du tout, sous certaines hypothèses (voir les notes)? Y at-il un meilleur moyen que de jeter le code avec float()
?
Notes: Je ne peux pas toucher l'API graphique. Je dois utiliser la fonction SetScale() qui prend en charge les flottants. De plus, je ne peux pas non plus toucher à la taille, ça doit être un int non signé. Je suis sûr qu'il y a beaucoup d'autres exemples avec le même «problème». Ce qui précède peut être appliqué à toute conversion qui doit être faite et vous en tant que programmeur avez peu de choix en la matière.
Cela va barf avertissements comme un 18 ans à un bizutage sur mon compilateur aux réglages les plus élevés. –
Oui, MS VC++ 10 prévient pour cela. Supprimé ma réponse car la distribution est nécessaire pour se débarrasser de ceux-ci. –
En laissant le casting, je veux dire –