我在 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