Выбор ответа Junior Задачи на Kotlin спрашивают часто обновлено

Переполнение Int в Kotlin

Вопрос

Что выведет println(100_000 * 100_000)?

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

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

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

Коротко

Правильный ответ: 1410065408. Оба литерала Int, произведение считается в 32 битах и молча переполняется: 10^10 по модулю 2^32 даёт 1410065408.

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

  1. 10000000000
  2. 1410065408правильный ответ
  3. Бросится ArithmeticException
  4. Ошибка компиляции

Разбор

Оба литерала Int, произведение считается в 32 битах и молча переполняется: 10^10 по модулю 2^32 даёт 1410065408. Исключения при переполнении в Kotlin нет (для проверки есть Math.multiplyExact). Компилятор константное переполнение пропускает, хотя может предупредить. Правильно 100_000L * 100_000.

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

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