I have:
int a = 2147483647;
short b = (short)a;
and I get b = -1
whereas I expect int32
to be converted to int16
(short
). I expect to see some value and not -1
.
Please someone help me with this.
Your int A is larger than the size of short. When you convert A to short, you get a 1 in the left most bit, which is going to indicate that it is a negative number. Since you're getting -1, I suppose you're getting 1s in all 16 bits, which is going to give you -2^15 + 2^14 + 2^13... + 2^0, which will give you -1. In short (no pun intended), you can't convert the integer to a short if it is too large.