Вступить в клуб →
средняявопросЯзык C/C++ и работа с памятью

Сравнение int и unsigned int: почему выбирается неожиданная ветка

int n = -1;
unsigned int m = 1;

if (n < m)
    puts("n меньше");
else
    puts("n не меньше");

Что напечатает программа и почему?

  • «n меньше»: сравнение выполняется по математическому значению, а -1 действительно меньше единицы
  • «n не меньше»: перед сравнением n преобразуется к unsigned и становится очень большим числом
  • Поведение не определено: результат зависит от компилятора, уровня оптимизации и разрядности платформы
  • Код не соберётся: стандарт запрещает сравнивать int и unsigned int без явного приведения типа

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела