Что выведет код Junior Типы и неопределённое поведение спрашивают часто обновлено

Что выведет: беззнаковое вычитание и деление

Вопрос

Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.

#include <climits>
#include <iostream>

int main() {
    unsigned int u = 0;
    u -= 1;
    std::cout << (u == UINT_MAX) << '\n';
    std::cout << (-1 < 1u) << '\n';
    std::cout << -7 / 2 << ' ' << -7 % 2 << '\n';
}

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

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

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

Коротко

Код выведет: 1, 0, -3 -1. 0u - 1 по модулю 2³² равно UINTMAX: печатается 1 (bool выводится числом).

Что выведет

1
0
-3 -1

Разбор

0u - 1 по модулю 2³² равно UINT_MAX: печатается 1 (bool выводится числом). В -1 < 1u знаковый операнд приводится к беззнаковому, сравнение ложно: 0. Деление обрезает к нулю: -7 / 2 == -3, остаток имеет знак делимого: -1.

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

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