Java でバグと思われる非常に奇妙なものを見つけました。for ループは、32767 (最大値、こちらを参照) の短い値の条件を正しく評価しません。以下のコード例を参照してください。ここで何か不足していますか?
for (short i = 32766; i <= 32767; i++) {
System.out.println("i is now " + i);
if (i < 0) {
System.out.println("This should never be printed");
break;
}
}
期待される出力:
i is now 32766
i is now 32767
実際の出力:
i is now 32766
i is now 32767
i is now -32768
This should never be printed