Что выведет код 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 ошибок.