我在Java中发现了一个非常奇怪的东西,似乎是一个bug.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;
}
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
i is now 32766
i is now 32767
Run Code Online (Sandbox Code Playgroud)
实际产量:
i is now 32766
i is now 32767
i is now -32768
This should never be printed
Run Code Online (Sandbox Code Playgroud)