Khi tôi chạy lớp này cho vòng lặp dường như chấm dứt đầucho vòng lặp kết thúc sớm khi so với Integer.MAX_VALUE và sử dụng System.out.println
class Test {
public static void main(String[] args) {
int result = 0;
int end = Integer.MAX_VALUE;
int i;
for (i = 1; i <= end; i += 2) {
System.out.println(i);
}
System.out.println("End:" + i);
}
}
Output là:
1
3
5
...
31173
31175
End:31177
Tại sao nó có kết thúc ở đó không Thật thú vị nếu tôi xóa System.out.println(i)
trong vòng lặp for, đầu ra sẽ là End:-2147483647
. Rõ ràng giá trị trong i
có wrapped round
.
Java phiên bản tôi đang sử dụng là
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Thử in số nguyên.MAX_VALUE –
Tôi không nhận được kết quả như vậy. Dường như bộ đệm của bạn được lấp đầy hoặc một cái gì đó. –
Mã không bao giờ được in Kết thúc, đó là một lỗi cũng (mặc dù một chút khác nhau), vòng lặp bạn đã viết là vô hạn, tôi sẽ luôn luôn là <= Integer.MAX_VALUE. – user439407