質問: 以下のように、プリミティブ型のそれぞれの型の扱える 範囲が2の乗数で規定されていますが、javaの場合マイナ ス〜プラスの範囲で扱うため、範囲内でも範囲/2を超え た部分をキャストして、マイナス値で保有します。 byte、short共にこれが可能なのですが、intのみキャス トできません。なぜなのでしょうか? byte x=(byte) 256; //2の8乗 short y=(short) 65536; //2の16乗 int h=4294967296; //2の32乗
回答: キャスト以前の問題。 256も65536もintで格納できるが、4294967296はintに格納できない。 ヒント:long