当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ fegetexceptflag()用法及代码示例


在头文件fenv.h中指定了C /C++中的fegetexceptflag()函数,并获取浮点异常标志。此函数将引发的异常存储在flagp指定的点中。

用法:

int fegetexceptflag(fexcept_t* flagp, int excepts)

参数:该函数接受两个强制性参数,如下所述:


  • flagp:表示指向存储表示形式的fexcept_t对象的指针。
  • excepts:表示位掩码值。

宏->说明:

  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 <bits/stdc++.h> 
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 <bits/stdc++.h> 
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


相关用法


注:本文由纯净天空筛选整理自AmanSrivastava1大神的英文原创作品 fegetexceptflag() function in C/C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。