roa*_*rox 1 java integer loops
有人可以解释为什么这个代码是Java 7,8的无限循环?循环应该停止,i = Integer.MAX_VALUE + 1但它似乎否定限制.为什么会这样?
public static void main(String[] args) {
for (int i = Integer.MAX_VALUE - 100; i <= Integer.MAX_VALUE; i++);
}
Run Code Online (Sandbox Code Playgroud)
2147483647到
-2147483648即Integer.MIN_VALUE的溢出时.-2147483648到2147483647.2147483647i ++操作时,将尝试将其值增加1,这是不可能的,因为范围仅为直到2147483647.2147483648它会回到起始值,即-2147483648i <= Integer.MAX_VALUE总是成为true.false,循环将持续到无穷大.您只需编写如下代码即可检查值溢出.
for (int i = Integer.MAX_VALUE - 100; i <= Integer.MAX_VALUE; i++){
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
您将看到以下输出.
2147483645
2147483646
2147483647
-2147483648
-2147483647
-2147483646
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |