long sum = 0L;
final int max = Integer.MAX_VALUE;
for (int i = 0; i <= max; i++) {
sum += i;
}
System.out.println(sum);
请问这段代码问题在哪??为什么每次cpu100%
long sum = 0L;
final int max = Integer.MAX_VALUE;
for (int i = 0; i <= max; i++) {
sum += i;
}
System.out.println(sum);
请问这段代码问题在哪??为什么每次cpu100%
由 int 溢出引起的死循环
[code="java"] long sum = 0L;
final int max = Integer.MAX_VALUE;
for (int i = 0; i <= max; i++) {
sum += i;
if (i == max){
// 这里跳出循环,否则 i++ 之后由于发生溢出,
// i 会变成负数,陷入死循环
break;
}
}
System.out.println(sum);[/code]