Почему следующие комбинации сложения или вычитания максимального и минимального целочисленных значений арифметически неверны?
public class Program
{
public static void main(String[] args) {
System.out.println(Integer.MIN_VALUE+" - "+Integer.MAX_VALUE+" = "+(long)(Integer.MIN_VALUE-Integer.MAX_VALUE));
System.out.println(Integer.MAX_VALUE+" - "+Integer.MIN_VALUE+" = "+(long)(Integer.MAX_VALUE-Integer.MIN_VALUE));
//the only correct result System.out.println(Integer.MAX_VALUE+" + "+Integer.MIN_VALUE+" = "+(long)(Integer.MAX_VALUE+Integer.MIN_VALUE));
}
}
Выход
-2147483648 - 2147483647 = 1
2147483647 - -2147483648 = -1
2147483647 + -2147483648 = -1