Что выведет код Junior Основы языка обновлено

Целочисленное деление и приведение

Вопрос

Что выведет код? По строке на каждый вывод.

fun main() {
    val a = 7
    val b = 2
    println(a / b)
    println(a % b)
    println(a / b.toDouble())
    println(-7 / 2)
    println(-7 % 2)
    println(Int.MAX_VALUE + 1)
}

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: 3, 1, 3.5, -3, -1, -2147483648. Деление двух Int целочисленное с отбрасыванием дробной части к нулю: 7 / 2 = 3, -7 / 2 = -3.

Что выведет

3
1
3.5
-3
-1
-2147483648

Разбор

Деление двух Int целочисленное с отбрасыванием дробной части к нулю: 7 / 2 = 3, -7 / 2 = -3. Остаток берёт знак делимого: -7 % 2 = -1 (для математического остатка есть mod: (-7).mod(2) == 1). Если хотя бы один операнд Double, деление вещественное. Переполнение Int молчаливое: Int.MAX_VALUE + 1 превращается в Int.MIN_VALUE, исключения нет.

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

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

Термины по теме