📜  C++ fegetexceptflag()(1)

📅  最后修改于: 2023-12-03 15:29:49.308000             🧑  作者: Mango

C++ fegetexceptflag()

fegetexceptflag() 函数可以获取当前浮点环境的异常掩码,以及指示哪些浮点异常来自于陷阱而不是异常浮点运算的标志。

头文件

该函数位于 <cfenv> 头文件中。

语法
#include <cfenv>
int fegetexceptflag(fexcept_t* flagp, int excepts);
参数
  • flagp:指向将异常标志存储在其中的 fexcept_t 类型的地址。
  • excepts:一个整数,用于指定要检索哪些异常标志。
返回值
  • 如果成功,则返回零。
  • 如果在读取当前异常标志时出现错误,则返回一个非零值。
代码示例
#include <iostream>
#include <cfenv>
#include <cmath>

#pragma STDC FENV_ACCESS on

int main() {
    double x = 1.0, y = 0.0;
    int ex;

    // 触发浮点异常,将浮点异常置为存储器中的 fexcept_t 变量
    fexcept_t ex_flags;
    feclearexcept(FE_ALL_EXCEPT);
    x = std::sqrt(y);
    fegetexceptflag(&ex_flags, FE_ALL_EXCEPT);

    if (fetestexcept(FE_INVALID)) {
        std::cout << "Invalid argument to square root.\n";
    }
    std::cout << "Invalid exceptions raised: 0x" << std::hex << ex_flags << ".\n";

    return 0;
}
总结

fegetexceptflag() 函数可以用于获取包含有关当前浮点环境中发生了哪些异常的信息的 fexcept_t 变量。调用该函数后,在 fexcept_t 变量中的异常标志描述了先前发生了哪些异常。