casting de uint16 à int32
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:
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