Выбор ответа Junior Основы: типы, обёртки, static обновлено

Переполнение int

Вопрос

Что выведет System.out.println(Integer.MAX_VALUE + 1);?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: -2147483648. Целочисленная арифметика в Java переполняется молча по модулю 2^32: максимум плюс один даёт минимум, -2147483648.

Варианты ответа

  1. 2147483648
  2. Будет выброшено ArithmeticException
  3. Ошибка компиляции: константа не помещается в int
  4. -2147483648правильный ответ

Разбор

Целочисленная арифметика в Java переполняется молча по модулю 2^32: максимум плюс один даёт минимум, -2147483648. Значение 2147483648 в int не помещается, а результат выражения имеет тип int. ArithmeticException бросают только Math.addExact и деление на ноль. Компилятор тут не ругается: он вычисляет константу с тем же переполнением.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.