Java ドキュメントからint has a minimum value of -2,147,483,648 and a maximum value of 2,147,483,647 (inclusive)
。
クラスがありTest.java
ます。
public class Test
{
public static void main(String[] args)
{
int i=2147483647; //max positive value an int can store
for(;;)
{
System.out.println(++i);
}
}
}
私の知る限り++i
、 の値をi
1 増やして例外をスローする必要があります。これ2147483648
は、 では許可されていないためですint
。
しかし、上記のプログラムを実行すると (無限ループのため) 実行され、値を にインクリメントする代わりに、 に2147483648
割り当てられた値は でi
あり-2147483648
、値は毎回 によってデクリメントされ1
ます。
サンプル実行 (クラスを変更した後)
public static void main(String[] args)
{
int i=2147483647;
for(;;)
{
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
break;
}
}
出力:
-2147483648
-2147483647
-2147483646
-2147483645
-2147483644
回答/ヒントをいただければ幸いです。