Demotion of Integers (整数の下位変換)
ANSI 3.2.1.2 値を表すことができない場合に、整数を短い符号付き整数に変換したか、符号なし整数を同じ長さの符号付き整数に変換したときの結果
long 整数が short にキャストされるか、 short が char にキャストされるときには、下位バイトが保持されます。
たとえば、次のコード行、
short x = (short)0x12345678L;
では、値 0x5678 が x に代入されます。また、次のコード行、
char y = (char)0x1234;
では、値 0x34 が y に代入されます。
signed 変数が unsigned に変換されるときと、その逆で、ビット パターンは変わりません。 たとえば、-2 (0xFE) を unsigned 値にキャストすると、254 (これも 0xFE) になります。