Энциклопедия багов
Забывание про целочисленное делениеЛогические и тихие ошибки/ Логическая ошибка
Игнорирование переполнения при использовании сокращённых операторовЛогические и тихие ошибки/ Логическая ошибка
Проверка `NaN` через `== NaN`Логические и тихие ошибки/ Логическая ошибка
Незнание переполнения (overflow) и исчезновения (underflow)Логические и тихие ошибки/ Логическая ошибка
Вычитание близких чисел (катастрофическая потеря точности)Логические и тихие ошибки/ Логическая ошибка
Игнорирование эффекта "Слон и муравей" (сложение чисел разного масштаба)Логические и тихие ошибки/ Логическая ошибка
Обратное приведение `float` → `int` с надеждой на округлениеЛогические и тихие ошибки/ Логическая ошибка
Сравнение чисел через `==` без учёта погрешностиЛогические и тихие ошибки/ Логическая ошибка
Предположение о фиксированном размере `int` и `uint`Логические и тихие ошибки/ Логическая ошибка
Использование `n % 2 == 1` для определения нечётностиЛогические и тихие ошибки/ Логическая ошибка
Потеря данных при приведении "вниз"Логические и тихие ошибки/ Логическая ошибка
Ожидание всегда неотрицательного остаткаЛогические и тихие ошибки/ Логическая ошибка
Неверное округление при деленииЛогические и тихие ошибки/ Логическая ошибка
Ожидание дробного результата от деления целыхЛогические и тихие ошибки/ Логическая ошибка
Неучёт переполнения при умноженииЛогические и тихие ошибки/ Логическая ошибка
Надежда на автоматическую проверку границЛогические и тихие ошибки/ Логическая ошибка
Использование знакового типа для заведомо неотрицательных данныхЛогические и тихие ошибки/ Логическая ошибка
Использование `int` везде "на всякий случай"Логические и тихие ошибки/ Логическая ошибка
Забывать, что `case` не проваливается автоматическиЛогические и тихие ошибки/ Логическая ошибка
Слишком глубокие вложения (лестница ужасов)Логические и тихие ошибки/ Логическая ошибка