Problème de conversion sur visual studio
Résolu/Fermé
abyass
Messages postés
18
Date d'inscription
vendredi 30 juin 2017
Statut
Membre
Dernière intervention
21 août 2017
-
12 juil. 2017 à 15:55
abyass Messages postés 18 Date d'inscription vendredi 30 juin 2017 Statut Membre Dernière intervention 21 août 2017 - 17 juil. 2017 à 08:53
abyass Messages postés 18 Date d'inscription vendredi 30 juin 2017 Statut Membre Dernière intervention 21 août 2017 - 17 juil. 2017 à 08:53
A voir également:
- Problème de conversion sur visual studio
- Microsoft visual c++ runtime - Guide
- Visual petanque - Télécharger - Sport
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Visual paradigm - Télécharger - Gestion de données
- Cam studio - Télécharger - Capture d'écran
1 réponse
YCN-
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
12
13 juil. 2017 à 10:02
13 juil. 2017 à 10:02
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-
Modifié le 13 juil. 2017 à 18:57
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
17 juil. 2017 à 08:53
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 ?