Conversion implicite - C - Programmation
Marsh Posté le 15-03-2007 à 21:17:16
les char sont des bytes. donc il n'y a de conversion destructive puisque un byte passe dans un int
Marsh Posté le 16-03-2007 à 09:24:40
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.
Marsh Posté le 16-03-2007 à 09:56:56
De mémoire, les char/short sont convertis en int pour tout les traitements qu'ils subissent.
Marsh Posté le 16-03-2007 à 10:39:45
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
Marsh Posté le 16-03-2007 à 17:00:00
Joel F a écrit : De mémoire, les char/short sont convertis en int pour tout les traitements qu'ils subissent. |
exact
Marsh Posté le 15-03-2007 à 19:34:00
Bonjour,
J'ai un petit souci de comprenette sur le sujet ..
Si je fais :
donc là on a divisé 2 int puis converti en float
Maintenant :
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