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 :

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
-11075 étant la valeur correcte recherchée.

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