📜  C / C++中的fegetexceptflag()函数

📅  最后修改于: 2021-05-30 04:43:09             🧑  作者: Mango

C / C++中的fegetexceptflag()函数在头文件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++ program to illustrate
// fegetexceptflag() function
  
#include 
using namespace std;
  
int main()
{
    // bitmask value
    fexcept_t excepts;
  
    // divided by zero exception
    feraiseexcept(FE_DIVBYZERO);
  
    // current state is saved
    fegetexceptflag(&excepts, FE_ALL_EXCEPT);
    cout << "Exception raised -> \n";
  
    // print the exception occurred
    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++ program to illustrate
// fegetexceptflag() function
  
#include 
using namespace std;
  
int main()
{
    // bitmask value
    fexcept_t excepts;
  
    // raised exception
    feraiseexcept(FE_ALL_EXCEPT);
  
    // current state is saved
    fegetexceptflag(&excepts, FE_ALL_EXCEPT);
    cout << "Exception raised -> \n";
  
    // print the exception occurred
    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
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。