Problème de conversion sur visual studio
Résolu
abyass
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
abyass Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
abyass Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai besoin de vos aides SVP.
J'étais entrain de développer sur Code::Blocks et tout marche bien.
Mais je viens de changer l'IDE à Visual Studio et là des warnings inatendus apparaissent.
Voilà un morceau du code:
le warning est :
Je n'arrive pas à le résoudre.
Quelqu'un pourra m'aider SVP.
Merci :)
J'ai besoin de vos aides SVP.
J'étais entrain de développer sur Code::Blocks et tout marche bien.
Mais je viens de changer l'IDE à Visual Studio et là des warnings inatendus apparaissent.
Voilà un morceau du code:
float f;
int i;
f=(int)i;
le warning est :
warning C4244: '=' : conversion de 'int' en 'float', perte possible de données
Je n'arrive pas à le résoudre.
Quelqu'un pourra m'aider SVP.
Merci :)
A voir également:
- Problème de conversion sur visual studio
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Visual petanque - Télécharger - Sport
- Visual c++ 2019 - Guide
- Visual paradigm - Télécharger - Gestion de données
- Photofiltre studio - Télécharger - Retouche d'image
1 réponse
Salut,
Bah en fait moi je me demande pourquoi Code Blocks ne te disais rien tu n'as peut être tout simplement pas fait attention.
Déjà tu fais plusieurs erreurs.
Tu peux faire ça :
ou
Maintenant si ce que tu veux faire c'est "tronquer", cad, admettons tu as un float égale à 25.355 et que tu veux le convertir en un float égale à 25.0 , il faut que tu fasse ça :
ou encore de manière condensé :
YCN-
Bah en fait moi je me demande pourquoi Code Blocks ne te disais rien tu n'as peut être tout simplement pas fait attention.
Déjà tu fais plusieurs erreurs.
- La première et la plus grave c'est que f est un float donc quand tu fais un cast en int, tu fais un trucs bizarre. C'est comme si tu disais, toi tu es une banane transforme toi en cerise. ça ne marche pas...
Tu peux faire ça :
float f; int i; i = (int)f;
ou
float f; int i; f = (float) i ;
- Ta deuxième erreur c'est que tu n'as pas initialisé tes variables, donc en fait ce que tu fais a un comportement complètement étrange.
Maintenant si ce que tu veux faire c'est "tronquer", cad, admettons tu as un float égale à 25.355 et que tu veux le convertir en un float égale à 25.0 , il faut que tu fasse ça :
float f = 25.355; int i = (int) f; f = (float) i ;
ou encore de manière condensé :
float f = 25.355; f = (float) ((int) f) ;
YCN-
Tu as raison sur le fait que les variables ne sont pas initialisées, cependant je ne suis pas sûr que le code posté par abyass soit complet.
Codeblocks n'est pas un compilateur, c'est un EDI qui peut fonctionner avec de nombreux types de compilateurs.
Il est habituellement utilisé avec gcc, cependant, et c'est probablement avec ce compilateur que abyass compilait son code.
Il est parfaitement légal, en C, de faire :
Les lignes 7 ou 8 sont complètement équivalentes, le cast étant inutile puisque i est déjà un int. Dans les deux cas, le contenu entier affecté à f sera implicitement convertit en float.
La compilation de ce code avec gcc et les options ne produit aucun warning.
Selon le standard du C, le type float peut contenir largement ce qui tient dans un int (FLT_MAX vaut au moins 3.40282347E+38F, et INT_MAX +32767).
Par ailleurs, il n'y a pas de "pertes", de décimales dans ce sens (cela arriverait dans l'autre sens, si on affectait un float à un int, avec, en outre, un risque de débordement, non géré dans ton code d'exemple).
Je ne comprends pas l'avertissement de Visual Studio. En cherchant dans la doc de Microsoft, on dirait que le message est lié au compilateur C++.. peut-être abyass a-t-il créé un projet C++. Sous Visual Studio, pour compiler en C et non en C++, il faut que les sources soient nommées .c et non pas .cpp
Dal
En fait, sur Code::Blocks, je compile avec mingw. Et là sur Visual studio, j'ai nommé mes sources .c non .cpp et j'ai même changé l'option compilation sous : Compiler comme code C.
J'ai changé mes float en double et ça marche. J'ai plus ces warnings. Pour moi, ce que j'ai vu qu'il est préférable d'utiliser double au lieu de float .
Donc je ne sais pas si je suis dans le bon sens ou non ?