C ++ fegetexceptflag () - Стандартная библиотека C ++

Функция fegetexceptflag () в C ++ получает флаги исключений с плавающей запятой, указанные в исключениях аргумента, и сохраняет их в точке, заданной flagp.

Функция fetgetexceptflag () определена в заголовочном файле.

прототип fegetexceptflag ()

 int fegetexceptflag (fexcept_t * flagp, int исключения);

Аргумент исключения может быть побитовым ИЛИ макроса исключения с плавающей запятой.

fegetexceptflag () Параметры

  • flagp: указатель на объект fexcept_t, где будут храниться флаги.
  • исключения: список битовых масок, которые нужно получить.
Битовая маска принимает макросы
Макрос Тип Описание
FE_DIVBYZERO Погрешность полюса Деление на ноль
FE_INEXACT Неточный Неточные результаты, такие как (1.0 / 3.0)
FE_INVALID Ошибка домена По крайней мере, один используемый аргумент - это значение, для которого функция не определена.
FE_OVERFLOW Ошибка диапазона переполнения Результат слишком велик по величине, чтобы его можно было представить возвращаемым типом
FE_UNDERFLOW Ошибка диапазона недостаточного переполнения Результат слишком мал по величине, чтобы его можно было представить возвращаемым типом
FE_ALL_EXCEPT Все исключения Все исключения поддерживаются реализацией

fegetexceptflag () Возвращаемое значение

  • Функция fegetexceptflag () возвращает ноль в случае успеха, в противном случае - ненулевое значение.

Пример: как работает функция fegetexceptflag ()?

 #include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) int main() ( fexcept_t excepts; feraiseexcept(FE_DIVBYZERO); /* save current state*/ fegetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); feraiseexcept(FE_INVALID|FE_OVERFLOW); print_exceptions(); /* restoring previous exceptions */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); return 0; )

Когда вы запустите программу, вывод будет:

 Повышенные исключения: FE_DIVBYZERO Повышенные исключения: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Повышенные исключения: FE_DIVBYZERO

Интересные статьи...