Integer.MAX_VALUE 面试题

如下代码:

1
2
3
4
5
6
7
final int start = Integer.MAX_VALUE-100;
final int end = Integer.MAX_VALUE;
int count = 0;
for (int i = start; i <= end;i++) {
count++;
}
System.out.println(count);

idea调试

输出结果为?

没有输出结果

分析

Integer.MAX_VALUE用二进制表示1111 1111 1111 1111 1111 1111 1111 111

所以当i++一直到=end时,即i = Integer.MAX_VALUE时,此时计算的结果为100,但是当接着往下面执行时,i++即 i = Integer.MAX_VALUE+1,i此时二进制1111 1111 1111 1111 1111 1111 1111 111 + 1 的结果为-1000 0000 0000 0000 0000 0000 0000 0000,即i = -2147483648,符合 i < end条件,所以循环接着往下执行,一直到=end,+1后又变为负数,周而复始,所以不会有结果输出。