No, short and int are signed types, so it is aided by a character extension, not a 0-byte addition:
-32 short = 11111111 11100000
-32 int = 11111111 11111111 11111111 11100000
leaving the MSB as 1, i.e. negative.
You can fake the behavior you expect by first entering it unsigned, for example
printf("%d", (unsigned short)((short)(-32)));
source
share