fesetexceptflag函数
概要:
#include <fenv.h> int fesetexceptflag(const fexcept_t *flagp, int excepts);
描述:
该函数尝试将参数excepts指定的浮点状态标志设置为存储在参数flagp指向对象中的状态。*flagp值应先通过fegetexceptflag函数调用获取,fegetexceptflag函数的第二个参数至少表示参数excepts表示的浮点异常。fesetexceptflag函数不会引发浮点异常,只会设置浮点异常标志的状态。
函数fetestexcept、feraiseexcept、feclearexcept支持设置或者清除浮点状态标志的基本抽象。具体实现中,浮点状态标志可能包含更多信息,例如:首次引发浮点异常的代码地址;函数fegetexceptflag、fesetexceptflag能够处理浮点状态标志的全部内容。
参数:
const fexcept_t *flagp
参数为一个指向fexcept_t类型对象的指针。
int excepts
参数为位掩码值,表示浮点异常的子集,可以是0,也可以是一个或者多个实现支持的浮点异常宏的按位或运算值(例如:FE_OVERFLOW|FE_INEXACT)。如果参数是其它值,函数行为是未定义的。
返回值:
如果参数excepts为0或者如果所有指定标志都成功设置,函数返回0;否则函数返回一个非0值。
范例:
|
|
输出:
Exceptions: FE_INEXACT FE_UNDERFLOW
Exceptions: FE_INEXACT FE_UNDERFLOW
在这个例子中,先通过double result = exp(-1000.0);语句生成了两个异常FE_INEXACT和FE_UNDERFLOW;然后将这两个异常保存到变量flagp中;最后通过fesetexceptflag语句重新设置了异常标志。
相关内容:
feclearexcept | 清除浮点异常的函数。 |
fegetexceptflag | 获取浮点异常标志的函数。 |
feraiseexcept | 引发浮点异常的函数。 |
fetestexcept | 测试浮点异常的函数。 |