Переполнение в Java
Переполнение - это шаг за край типа.
У byte верхний край равен 127,
нижний край равен -128. Отдельного
числа 128 в этом типе нет. Шаг за
верхним краем попадает на нижний.
Сложение byte считается в int.
Там 128 помещается. Порча случается
в момент записи обратно в byte:
byte num1 = 127;
int num2 = num1 + 1;
num1 = (byte) num2;
System.out.println(num2); // выведет 128
System.out.println(num1); // выведет -128
С другого края шаг такой же.
От -128 он дает 127:
byte num = -128;
num = (byte) (num - 1);
System.out.println(num); // выведет 127
Дана переменная:
byte num = 126;
Прибавьте 1, запишите результат
в эту же переменную через (byte)
и выведите ее.
Дана переменная:
byte num = 127;
Прибавьте 1, запишите результат
в эту же переменную через (byte)
и выведите ее.
Дана переменная:
byte num = -128;
Отнимите 1, запишите результат
в эту же переменную через (byte)
и выведите ее.