【STL】头文件:<cfenv>

本文介绍C++标准库中<cfenv>头文件的功能与使用,该头文件用于访问和控制IEEE 754浮点环境,包括浮点异常标志、舍入模式等。其接口依赖硬件支持,且编译器优化可能影响异常检测的可靠性。内容涵盖标准声明规则、关键常量类型及实际使用注意事项。

该头文件引入 C 标准库头文件 <fenv.h>,并将相关标识符加入 std 命名空间。


1 说明

语法:

#include <cfenv>

备注:
包含该头文件,可以保证 C 标准库头文件中具有外部链接的名称会在 std 命名空间中进行声明。

常量与类型:

#define FE_ALL_EXCEPT see below                      //全部浮点异常集合
#define FE_DIVBYZERO see below                       //除零异常
#define FE_INEXACT see below                         //结果不精确(发生舍入)
#define FE_INVALID see below                         //无效运算(如 sqrt(-1))
#define FE_OVERFLOW see below                        //浮点上溢
#define FE_UNDERFLOW see below                       //浮点下溢
#define FE_DOWNWARD see below                        //向负无穷舍入
#define FE_TONEAREST see below                       //向最近值舍入(默认模式)
#define FE_TOWARDZERO see below                      //零舍入
#define FE_UPWARD see below                          //向正无穷舍入
#define FE_DFL_ENV  see below                        //默认浮点环境

namespace std{
   using fenv_t = object type;                       //保存完整浮点环境(舍入模式+异常标志)的对象类型
   using fexcept_t = integer type;                   //保存浮点异常状态标志的整数类型
}

2 接口

int feclearexcept(int except);                                  //清除指定的浮点异常标志
int fegetexceptflag(fexcept_t* pflag, int except);              //将异常标志状态保存到 fexcept_t
int feraiseexcept(int except);                                  //手动触发指定浮点异常
int fesetexceptflag(const fexcept_t* pflag, int except);        //恢复已保存的异常标志
int fetestexcept(int except);                                   //测试指定异常标志是否被置位
int fegetround();                                               //获取当前浮点舍入模式
int fesetround(int mode);                                       //设置浮点舍入模式
int fegetenv(fenv_t* penv);                                     //获取当前完整浮点环境
int feholdexcept(fenv_t*penv);                                  //保存环境、清除异常、屏蔽浮点陷阱
int fesetenv(const fenv_t* penv);                               //恢复保存的浮点环境
int feupdateenv(const fenv_t* penv);                            //恢复环境并重新抛出旧的异常标志

💡使用提示:

  • 该套 API 操作 IEEE754 浮点状态标志与舍入模式,依赖硬件支持;
  • 编译器优化可能消除浮点运算,干扰异常标志检测。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值