feholdexcept () в C / C ++

Опубликовано: 30 Декабря, 2021

Функция feholdexcept () в C / C ++ сначала сохраняет текущее окружение с плавающей запятой в объекте fenv_t, а затем сбрасывает текущие значения всех флагов состояния с плавающей запятой. Функция feholdexcept () определена в заголовочном файле cfenv в C ++ и в заголовочном файле fenv.h в C.
Синтаксис:

 интервал feholdexcept (fenv_t * envp)

Параметры: функция принимает единственный обязательный параметр envp, который является указателем на объект.
типа fenv_t, в котором хранится текущий статус среды с плавающей запятой.

Возвращаемое значение: функция возвращает значение типа int при двух условиях:

  • Если функция завершилась успешно, возвращается 0.
  • В случае неудачи возвращает ненулевое целое число.

Программы ниже иллюстрируют вышеуказанную функцию.

Программа 1:

Программа 2:

// C++ program to illustrate the
// feholdexcept() function
#include <bits/stdc++.h>
#pragma STDC FENV_ACCESS on
using namespace std;
// function to print raised exceptions
void raised_exceptions()
{
cout << "Exceptions raised are : " ;
if (fetestexcept(FE_DIVBYZERO))
cout << " FE_DIVBYZERO " ;
else if (fetestexcept(FE_INVALID))
cout << " FE_INVALID " ;
else if (fetestexcept(FE_OVERFLOW))
cout << " FE_OVERFLOW " ;
else if (fetestexcept(FE_UNDERFLOW))
cout << " FE_UNDERFLOW " ;
else
cout << " No exception found " ;
return ;
}
// Driver code
int main()
{
// environment variable
fenv_t envp;
// raise certain exceptions
feraiseexcept(FE_DIVBYZERO);
// print the raised exception
raised_exceptions();
// saves and clears current
// exceptions by feholexcept function
feholdexcept(&envp);
// no exception found
raised_exceptions();
// restores the previously
// saved exceptions
feupdateenv(&envp);
raised_exceptions();
return 0;
}
Выход:
Поднятые исключения: FE_DIVBYZERO
Возникшие исключения: Исключения не обнаружены.
Поднятые исключения: FE_DIVBYZERO
Хотите учиться на лучших видео и практических задачах, ознакомьтесь с Базовым курсом C для базового и продвинутого C.
C++ C