Что означает код errno 34 (ERANGE)?

 
Также может означать:
КонстантаТипОС
ERROR_WRONG_DISKОшибка WindowsWindows
KERN_INVALID_MEMORY_CONTROLКод возврата ядра macOSmacOS
ippStsStreamEndСтатус Intel IPPЛюбая
FILE_SYSTEMКод BSODWindows
Предыдущий Следующий
EDOM EDEADLK

ERANGE

Допустимый аргумент, непредставимый результат

ERANGE обычно означает, что операция математически осмысленна, но её результат невозможно представить целевым типом или интерфейсом. Математические функции используют этот код при переполнении и потере порядка. Полюс, например log(0), также приводит к ERANGE, поскольку точный результат равен бесконечности.

Ошибка не ограничивается вычислениями с плавающей точкой. strtol() возвращает LONG_MAX или LONG_MIN и устанавливает errno в ERANGE, когда разобранное целое выходит за диапазон long. По одному граничному возвращённому значению нельзя отличить корректное число на границе от неудачного преобразования.

Отличие от EDOM

СостояниеСмыслТипичный пример
EDOMАргумент находится вне области определения функции.log(-1) либо отрицательное основание pow() с нецелым показателем.
ERANGEОперация определена, но результат не помещается в целевое представление.Переполнение pow() либо целое вне диапазона при разборе strtol().

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

  • Для преобразования целых перед strtol() установите errno в ноль, сохраните end pointer, затем проверьте ERANGE.
  • Для математических функций предварительно очистите исключения FPU и после вызова анализируйте FE_OVERFLOW, FE_UNDERFLOW и FE_DIVBYZERO вместе с результатом и errno.
  • Осознанно выберите отказ, более широкий тип, масштабирование или документированное насыщение. Молчаливое ограничение значения может скрыть более раннюю ошибку данных или единиц измерения.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.