convertir int court en C

J'ai:

int a = 2147483647;
short b = (short)a;

et je reçois b = -1 alors que je m'attends int32 être converti en int16(short). Je m'attends à voir une certaine valeur et pas -1.

Il vous plaît quelqu'un peut m'aider.

Je dirais, la valeur ne rentre pas, de sorte que les résultats ne sont pas définis.
-1 est "de la valeur". Et le (short) cast est inutile; la conversion sera effectuée implicitement: short b = a;
Le résultat de la conversion est mise en œuvre définies par l', et non pas défini.

OriginalL'auteur user1128265 | 2013-08-16