Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2532 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Conversion implicite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion implicite

n°1529077
cricri_
Posté le 15-03-2007 à 19:34:00  profilanswer
 

Bonjour,
 
J'ai un petit souci de comprenette sur le sujet ..
 
Si je fais :
 

Code :
  1. float f = 3 / 2; // ça donne 1


donc là on a divisé 2 int puis converti en float
 
Maintenant :
 

Code :
  1. unsigned char a = 0xAA, b = 0x55, c = 0xAA, d = 0x55;
  2. int n = a | (b << 8) | (c << 16) | (d << 24);


Et là n est correct dans le sens où il vaut : 0xAA55AA55
 
Mais j'avoue ne pas être sûr de comprendre ...
car on dirait qu'au niveau conversion les chars ont été converti en int pendant ou avant le décalage puis les OU ont été appliqués.
 
si quelqu'un a un lien sur ces conversions ..
 
Merci.


Message édité par cricri_ le 16-03-2007 à 09:22:23
mood
Publicité
Posté le 15-03-2007 à 19:34:00  profilanswer
 

n°1529139
jagstang
Pa Capona ಠ_ಠ
Posté le 15-03-2007 à 21:17:16  profilanswer
 

les char sont des bytes. donc il n'y a de conversion destructive puisque un byte passe dans un int


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1529328
cricri_
Posté le 16-03-2007 à 09:24:40  profilanswer
 

Oui, mais ce qu'on voit c'est que dans le premier cas il n'y a pas eu de conversion avant l'affectation, alors que dans le 2ème, à priori il y a bien eu conversion de char en int pour les décalages, et c'est ce genre de règle que je cherche à connaitre.

n°1529346
Joel F
Real men use unique_ptr
Posté le 16-03-2007 à 09:56:56  profilanswer
 

De mémoire, les char/short sont convertis en int pour tout les traitements qu'ils subissent.

n°1529382
theshockwa​ve
I work at a firm named Koslow
Posté le 16-03-2007 à 10:39:45  profilanswer
 

c'est au niveau de l'opérateur qu'il y a conversion, de même que (b << 8) est une opération sur des int parce que 8 est un int, tu aurais pu mettre 3 / 2.0 pour avoir un résultat tel que tu pouvais le vouloir dans ton premier exemple. L'affectation n'est en cause dans ton deuxième exemple

n°1529640
cricri_
Posté le 16-03-2007 à 16:46:24  profilanswer
 

Merci.
 :jap:  

n°1529642
Taz
bisounours-codeur
Posté le 16-03-2007 à 17:00:00  profilanswer
 

Joel F a écrit :

De mémoire, les char/short sont convertis en int pour tout les traitements qu'ils subissent.


exact


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Conversion implicite

 

Sujets relatifs
[résolu] Besoin d'aide pour un conversion Pascal->phpProblème IDIOT de conversion string->float [RESOLU]
[Code inside] Conversion entre UTF-8 et ANSI (utf8 ansi transact sql)Conversion Chiffres Anglais/Français Français/Anglais sous WORD
Conversion décimal/binaire/hexadécimalConversion de int et float en string en C
Conversion XSD en DTDC++ Conversion de string vers long
warning: [unchecked] unchecked conversionProblème de conversion de temps en fonction de timezone
Plus de sujets relatifs à : Conversion implicite


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR