📄 fenv.h
字号:
@函数名称: feraiseexcept
函数原型: void feraiseexcept(int excepts)
函数功能: 引发指定的异常
函数返回:
参数说明: 指定的浮点异常标志
FE_INEXACT 不精确的返回
FE_DIVBYZERO 除数零
FE_UNDERFLOW 下溢出
FE_OVERFLOW 上溢出
FE_INVALID 标记不准确
FE_ALL_EXCEPT 以上全部
注:前五个的值为2的某次方,即二进制数有一位为1(具体视编译器而定),最后一个为前面数或运算结果(二进制数全1)
所属文件: <fenv.h>
#include <stdio.h>
#include <math.h>
#include <fenv.h>
double DoSomethingWrong(void)
{
feraiseexcept(FE_OVERFLOW);
return 1.0;
}
int main()
{
fenv_t env;
int sets;
double f;
feholdexcept(&env);/* 保存环境,清除标记并禁用捕获 */
feclearexcept(FE_INVALID | FE_OVERFLOW);
f=DoSomethingWrong();
sets = fetestexcept(FE_INVALID | FE_OVERFLOW);
if(sets & FE_INVALID)printf("infalid");
else if(sets & FE_OVERFLOW)printf("overflow");
else fegetexceptflag(&env,FE_DIVBYZERO);
/* 恢复环境并引发相关的异常 */
feupdateenv(&env);
return 0;
}
@函数名称: feclearexcept
函数原型: void feclearexcept(int excepts)
函数功能: 清除指定的标记
函数返回:
参数说明: 指定的浮点异常
所属文件: <fenv.h>
@函数名称: fegetexceptflag
函数原型: void fegetexceptflag(fexcept_t *flagp, int excepts)
函数功能: 保存指定的标记
函数返回:
参数说明: flagp-指向保存结果,excepts-指定的浮点异常标志
所属文件: <fenv.h>
@函数名称: fesetexceptflag
函数原型: void fesetexceptflag(const fexcept_t *flagp, int excepts)
函数功能: 恢复指定的标记
函数返回:
参数说明: flagp-指向保存结果,excepts-指定的浮点异常标志
所属文件: <fenv.h>
@函数名称: fetestexcept
函数原型: int fetestexcept(int excepts)
函数功能: 返回指定标记的设置
函数返回: 引发异常的组合字
参数说明: 指定的浮点异常标志
所属文件: <fenv.h>
@函数名称: fegetround
函数原型: int fegetround(void)
函数功能: 返回对应于当前舍入方向的宏值
函数返回: 宏:
FE_TONEAREST 最近值
FE_UPWARD 向正无穷大
FE_DOWNWARD 向负无穷大
FE_TOWARDZERO 趋于零,丢分数
参数说明:
所属文件: <fenv.h>
#include <stdio.h>
#include <math.h>
#include <fenv.h>
int main()
{
int sd,i;
double x,y;
sd = fegetround();
fesetround(FE_DOWNWARD);
x=sqrt(.5);
printf("sqrt(.5) = 0x%08x 0x%08x = %16.15e\n",((int*)&x)[0],((int*)&x)[1],x);
fesetround(sd);
/*...*/
return 0;
}
@函数名称: fesetround
函数原型: int fesetround(int round)
函数功能: 将当前的舍入方向设置为其参数指定的方向
函数返回: 成功则返回非零值
参数说明: 舍入方向的宏
所属文件: <fenv.h>
@函数名称: fegetenv
函数原型: void fegetenv(fenv_t *envp)
函数功能: 将环境变量保存
函数返回:
参数说明: 指向保存结果的结构,除上面所述宏值,常量FE_DFL_ENV表示缺省环境
所属文件: <fenv.h>
@函数名称: fesetenv
函数原型: void fesetenv(const fenv_t *envp)
函数功能: 恢复环境变量
函数返回:
参数说明: 指向保存的结构
所属文件: <fenv.h>
#include <stdio.h>
#include <math.h>
#include <fenv.h>
void func (double x, double y)
{
fenv_t env;
x = x + y; /* floating-point op; may raise exceptions */
fegetenv(&env); /* save state of env after add */
/*...*/
y = y * x; /* floating-point op; may raise exceptions */
fesetenv(FE_DFL_ENV);
}
int main()
{
double x,y;
func(x,y);
return 0;
}
@函数名称: feholdexcept
函数原型: int feholdexcept(fenv_t *envp)
函数功能: 将环境保存,清除所有异常标记并建立不间断的模式
函数返回: 0-成功
参数说明: 指向保存结果的结构
所属文件: <fenv.h>
@函数名称: feupdateenv
函数原型: void feupdateenv(const fenv_t *envp)
函数功能: 恢复保存的环境,然后引发其标记的异常
函数返回:
参数说明: 指向保存结果的结构
所属文件: <fenv.h>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -