3 回答
TA贡献1790条经验 获得超9个赞
java中int的最大值是2,147,483,647将19加到j上,一次又一次,这个值会被传递。之后它将再次从 int 的最小值开始,即-2,147,483,648。
这将一直持续到 j 的值在某个时刻变为 1000。因此,循环将停止。
j将在整数的最大值上迭代 17 次以达到这一点。检查代码:
public class Solution {
public static void main(String args[]) {
int j = 0;
int iterationCount = 0;
for(int i=0;j != 1000;i++) {
j = j+19;
if(j - 19 > 0 && j < 0) {
iterationCount ++;
}
}
System.out.println("The value of J is: " + j + " iterationCount: " + iterationCount);
}
}
输出:
The value of J is: 1000 iterationCount: 17
TA贡献1789条经验 获得超8个赞
像这样扫描溢出:
public static void main(String[] args) {
int j = 0;
for(int i=0;j != 1000;i++) {
j = j+19;
if(j < Integer.MIN_VALUE+19){
System.out.println("overflow");
}
}
System.out.println("The value of J is: " + j);
}
印刷
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
溢出
J的值为:1000
这意味着 j 溢出 17 次,直到增量 19 最终达到 1000。
TA贡献1827条经验 获得超7个赞
正如 Saheb 所说,这是由于整数溢出造成的。
在 3842865528 次迭代后达到 J 的值 1000
public static void loop2()
{
int j = 0;
long iterations = 0;
for (int i = 0; j != 1000; i++) {
j = j + 19;
iterations++;
}
System.out.println("The value of J is: " + j + " reached after " + iterations + " iterations");
}
添加回答
举报