Что выведет код Middle Задачи на Java обновлено

Что выведет: целочисленная арифметика Java

Вопрос

Что выведет программа (Java 21)? Каждый вывод println с новой строки.

public class Main {
    public static void main(String[] args) {
        System.out.println(-7 / 2);
        System.out.println(-7 % 3);
        System.out.println(Math.floorMod(-7, 3));
        int big = 100_000;
        System.out.println(big * big);
        System.out.println((long) big * big);
        System.out.println(Integer.compare(-2_000_000_000, 2_000_000_000) + " " + (-2_000_000_000 - 2_000_000_000 > 0));
    }
}

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

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

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

Коротко

Код выведет: -3, -1, 2, 1410065408, 10000000000, -1 true. Деление округляет к нулю: -3.

Что выведет

-3
-1
2
1410065408
10000000000
-1 true

Разбор

Деление округляет к нулю: -3. Остаток имеет знак делимого: -1, а floorMod даёт неотрицательный 2. big * big вычисляется в int и переполняется до 1410065408; приведение одного множителя к long до умножения даёт верные 10¹⁰. Integer.compare честно говорит, что первое меньше, а вычитание переполняется и даёт положительное число: компаратор через вычитание ошибся бы.

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

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