System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE);
tại sao Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?
là đúng.
Tôi hiểu rằng số nguyên trong Java là 32 bit và không thể vượt quá 2^31-1, nhưng tôi không thể hiểu tại sao thêm 1 vào MAX_VALUE kết quả trong MIN_VALUE và không phải trong một số loại ngoại lệ. Không đề cập đến một cái gì đó như chuyển đổi trong suốt sang một loại lớn hơn, giống như Ruby.
Hành vi này có được chỉ định ở đâu đó không? Tôi có thể dựa vào nó?
nhiều câu trả lời hay tại đây ngay bây giờ, tuy nhiên, giờ đây tôi rất tò mò về lý do bạn hỏi "Tôi có thể dựa vào nó không?" - tại sao bạn muốn dựa vào nó? – Brian
nó có thể là một câu hỏi khác, --- Tôi đang tìm một số 'iterator' sẽ lặp lại một mảng bắt đầu từ phần tử N, sau đó sau khi đến phần tử cuối bắt đầu lặp từ phần tử 0 đến phần tử N-1 --- và số nguyên này hành vi có thể hữu ích cho điều đó ... nhưng tôi đã kết thúc chỉ với hai vòng lặp khác nhau –
Để tham khảo, nếu bạn muốn nhận ngoại lệ, một số thư viện cung cấp các phương thức: [Guava] (http: //docs.guava-libraries. googlecode.com/git-history/release/javadoc/com/google/common/math/IntMath.html#checkedAdd(int,%20int)) [Apache] (http://commons.apache.org/math/api- 2.2/org/apache/commons/math/util/MathUtils.html # addAndCheck (int,% 20int)) –