當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。