我寫了下面的代碼,當我有打印語句並且沒有它時,它會以不同的方式回答。Java溢出問題
class test
{
public static void main(String args[])
{
int i = Integer.MAX_VALUE;
int j = Integer.MAX_VALUE-100;
int count = 0;
for(; j<=i; j++){
count++;
//System.out.println(j); // If we remove comment, answer is different
}
System.out.println(count + ", " + j + ", " + (j<=i));
}
}
沒有打印語句回答是:
101, -2147483648, true
和閱讀的說法是:
15588, -2147468161, true
在這兩種情況下,最終狀態應該返回false
,但它返回true
。有人可以解釋這一點。
如果你改正了你的代碼,所以'j <= i'代替'j
我認爲這是一個重複http://stackoverflow.com/questions/12793248/for-loop-terminating-early-when-comparing-to-integer-max-value-and-using-system – auselen
@auselen不確定如果它是重複的,因爲有些人似乎看到openJDK 7的問題,而另一個問題是在JDK 6上的...... – assylias