[C]Pourquoi ce Warning? une idée?

Pourquoi ce Warning? une idée? [C] - C++ - Programmation

Marsh Posté le 21-02-2003 à 11:10:59    

Salut tt le monde :hello:  ,
lors de la compilation de mon programme j'ai ce warning
"Conversion may lose significant digits"
en soit le message je le comprend mais ce que je ne comprends pas c'est pourquoi il me dit ca?
ce qui ce passe c'est a chaque fois que j'effectue cette operation
 

Code :
  1. char reponse;
  2. [...]
  3. reponse=getch();

 
j'ai ce warning... mais pourquoi donc?
 
merci a tous:hello:
 
petit oubli.. je suis sous win XP borland C++ builder 6.0 et je fais du 'C'


Message édité par albino13 le 21-02-2003 à 11:13:15
Reply

Marsh Posté le 21-02-2003 à 11:10:59   

Reply

Marsh Posté le 21-02-2003 à 11:13:12    

Tu obtiens ce message quand tu places dans une variable d'un certain type une valeur dont le type a une plus grande précision ou qui offre un intervalle de valeurs permises plus grand.
Exemple, si tu places la valeur 258 de type int dans un char, tu obtiendras la valeur 2...


Message édité par BifaceMcLeOD le 21-02-2003 à 11:13:51
Reply

Marsh Posté le 21-02-2003 à 11:13:21    

getch ne retourne pas un char mais un int. Par exemple, getch peut retourner EOF qui ne peut pas se coder sur un char

Reply

Marsh Posté le 21-02-2003 à 11:14:08    

Pas assez rapide petit scarabée...  :D

Reply

Marsh Posté le 21-02-2003 à 11:14:41    

BifaceMcLeOD a écrit :

Tu obtiens ce message quand tu places dans une variable d'un certain type une valeur d'une plus grande précision ou dont l'intervalle de valeur est plus grand.
Exemple, si tu places la valeur 258 de type int dans un char, tu obtiendras la valeur 2...


c'est tout a fait ce que je me disais egalement mais la variable qui est reseptacle est de type char... et c un getch()... pourquoi je perdrais des informations? a premiere vu c'est de même type.. je comprend pas

Reply

Marsh Posté le 21-02-2003 à 11:17:59    

BifaceMcLeOD a écrit :

Pas assez rapide petit scarabée...  :D  

[:frenzy]

Reply

Marsh Posté le 21-02-2003 à 11:18:30    

Kristoph a écrit :

getch ne retourne pas un char mais un int. Par exemple, getch peut retourner EOF qui ne peut pas se coder sur un char


ok je comprend bien mieux alors  :jap:  :jap:  
merci bien

Reply

Marsh Posté le 21-02-2003 à 11:18:50    

albino13 a écrit :


c'est tout a fait ce que je me disais egalement mais la variable qui est reseptacle est de type char... et c un getch()... pourquoi je perdrais des informations? a premiere vu c'est de même type.. je comprend pas


tu perds des infos parce que getchar() renvoie un int, que tu stockes dans un char !
c'est pourtant pas dur à comprendre ! si tu chausses du 44 et que tu achètes du 38, tu auras mal aux pieds !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-02-2003 à 11:18:55    

Ne jamais faire d'a priori sur les prototypes de fonctions qu'on utilise : toujours se reporter à une documentation de référence de l'API.
 
Kristoph a donné l'information manquante. getch() renvoie bien un int, et ta supposition était fausse. Mais rassure-toi, c'est un des pièges classiques de l'API du C ANSI, et tu n'es ni le premier, ni (hélas) le dernier à tomber dans le panneau...  :sarcastic:
 
edit> A mon tour, d'être trop lent.  :o


Message édité par BifaceMcLeOD le 21-02-2003 à 11:19:43
Reply

Marsh Posté le 21-02-2003 à 12:28:29    

Citation :

si tu chausses du 44 et que tu achètes du 38, tu auras mal aux pieds !


Heu ... tu veux plutôt dire si tu chausses du 32 et que t'achètes du 8 ... :)


Message édité par HelloWorld le 21-02-2003 à 12:28:55

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 21-02-2003 à 12:28:29   

Reply

Marsh Posté le 21-02-2003 à 12:31:59    

HelloWorld a écrit :

Citation :

si tu chausses du 44 et que tu achètes du 38, tu auras mal aux pieds !


Heu ... tu veux plutôt dire si tu chausses du 32 et que t'achètes du 8 ... :)

[:xp1700]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed