Рубрики

функция fegetexceptflag () в C / C ++

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

Синтаксис:

int fegetexceptflag(fexcept_t* flagp, int excepts)

Параметры: функция принимает два обязательных параметра, которые описаны ниже:

  • flagp: обозначает указатель на объект fexcept_t, в котором хранится представление.
  • за исключением: обозначает значение битовой маски.

Макрос -> Описание :

  1. FE_DIVBYZERO -> Ошибка полюса: деление на ноль.
  2. FE_INEXACT -> Неточно: результат не точный.
  3. FE_INVALID -> Ошибка домена: хотя бы один из аргументов является значением, для которого функция не определена.
  4. FE_OVERFLOW -> Ошибка диапазона переполнения: результат слишком велик.
  5. FE_UNDERFLOW -> Ошибка диапазона недостаточного значения: результат слишком мал.
  6. FE_ALL_EXCEPT -> Все исключения.

Возвращаемое значение: функция возвращает два значения, как показано ниже:

  • Ноль: на успех.
  • Ненулевое: при сбое

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

// C ++ программа для иллюстрации
// функция fegetexceptflag ()

  
#include <bits/stdc++.h>

using namespace std;

  

int main()

{

    // значение битовой маски

    fexcept_t excepts;

  

    // делится на ноль исключений

    feraiseexcept(FE_DIVBYZERO);

  

    // текущее состояние сохранено

    fegetexceptflag(&excepts, FE_ALL_EXCEPT);

    cout << "Exception raised -> \n";

  

    // распечатать произошедшее исключение

    if (fetestexcept(FE_ALL_EXCEPT)) {

        if (fetestexcept(FE_DIVBYZERO))

            cout << "FE_DIVBYZERO \n";

        if (fetestexcept(FE_INEXACT))

            cout << "FE_INEXACT \n";

        if (fetestexcept(FE_INVALID))

            cout << "FE_INVALID \n";

        if (fetestexcept(FE_OVERFLOW))

            cout << "FE_OVERFLOW \n";

        if (fetestexcept(FE_UNDERFLOW))

            cout << "FE_UNDERFLOW \n";

        if (fetestexcept(FE_ALL_EXCEPT))

            cout << "FE_ALL_EXCEPT \n";

    }

    else

        cout << "None";

  

    return 0;

}

Выход:

Exception raised -> 
FE_DIVBYZERO 
FE_ALL_EXCEPT

Программа 2:

// C ++ программа для иллюстрации
// функция fegetexceptflag ()

  
#include <bits/stdc++.h>

using namespace std;

  

int main()

{

    // значение битовой маски

    fexcept_t excepts;

  

    // поднятое исключение

    feraiseexcept(FE_ALL_EXCEPT);

  

    // текущее состояние сохранено

    fegetexceptflag(&excepts, FE_ALL_EXCEPT);

    cout << "Exception raised -> \n";

  

    // распечатать произошедшее исключение

    if (fetestexcept(FE_ALL_EXCEPT)) {

        if (fetestexcept(FE_DIVBYZERO))

            cout << "FE_DIVBYZERO \n";

        if (fetestexcept(FE_INEXACT))

            cout << "FE_INEXACT \n";

        if (fetestexcept(FE_INVALID))

            cout << "FE_INVALID \n";

        if (fetestexcept(FE_OVERFLOW))

            cout << "FE_OVERFLOW \n";

        if (fetestexcept(FE_UNDERFLOW))

            cout << "FE_UNDERFLOW \n";

        if (fetestexcept(FE_ALL_EXCEPT))

            cout << "FE_ALL_EXCEPT \n";

    }

    else

        cout << "None";

  

    return 0;

}

Выход:

Exception raised -> 
FE_DIVBYZERO 
FE_INEXACT 
FE_INVALID 
FE_OVERFLOW 
FE_UNDERFLOW 
FE_ALL_EXCEPT

Рекомендуемые посты:

функция fegetexceptflag () в C / C ++

0.00 (0%) 0 votes