| Предыдущий | Следующий |
| EDOM | EDEADLK |
ERANGE
Допустимый аргумент, непредставимый результат
ERANGE обычно означает, что операция математически осмысленна, но её результат невозможно представить целевым типом или интерфейсом. Математические функции используют этот код при переполнении и потере порядка. Полюс, например log(0), также приводит к этому результату, поскольку точный результат равен бесконечности.
Ошибка не ограничивается вычислениями с плавающей точкой. 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. - Осознанно выберите отказ, более широкий тип, масштабирование или документированное насыщение. Молчаливое ограничение значения может скрыть более раннюю ошибку данных или единиц измерения.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.