#новичкам
Как вы думаете, результат выражения:
bool math = -1 < 1U;
будет правдой или ложью?
Нормальный человек думает, что математика работает.
Но С++ выкидывает ее в мусор и по итогу math == false.
#ЧЗХ ?
Вместо того, чтобы приводить беззнаковое число к знаковому, С++ делает наоборот. В итоге -1 должен конвертироваться в неотрицательное число. В дополненном коде -1 это 0xFFFFFFFF ака все единички, поэтому при касте к беззнаковому числу оно просто становится UINT32_MAX. И оно конечно больше 1.
Выход тут один. Не сравнивать знаковые и беззнаковые числа в одном выражении. Включайте -Wall -Werror и получите ошибку компиляции. После исправления арифметика будет работать как ожидается.
Mix things consciously. Stay cool
#cppcore