Bonjour,
Je peine à comprendre le problème de casting d'un uint16 à un int32 que je rencontre. J'ai une fonction 'f' qui me renvoie un uint16 et j'obtiens les résultats suivant :
-11075 étant la valeur correcte recherchée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int16 v = f(); cout << v; // -11075 cout << (int32)v; // -11075 cout << (int32)f(); // 54461
Tout d'abord, que ce passe-t-il lors de la première instruction ? f retournant un uint16, je ne comprends pas comment v peut-être dès lors négatif. Je pensais qu'un casting implicite se produisait dans de telles situations, non ?
Finalement pourquoi les casting des lignes 3 et 4 ne retourne pas la même valeur ?
D'avance merci pour toute éventuelle explication
Partager