C语言fenv头文件(fenv.h)中fetestexcept函数的用法及代码示例。
用法:
int fetestexcept (int excepts);
测试浮点异常
返回的值是按位或子集的表示excepts当前在浮点环境。或为零(如果没有例外)excepts目前已设定。
调用此函数的程序应确保编译指示FENV_ACCESS已启用该调用。
参数
- excepts
- 位掩码值:任意数量的组合(按位或)浮点异常实现支持的值:
宏值 描述 FE_DIVBYZERO 极点错误:除以零或其他一些渐近无限结果(来自有限参数)。 FE_INEXACT 不精确:结果不准确。 FE_INVALID 域错误:参数中的至少一个是未为其定义函数的值。 FE_OVERFLOW 溢出范围错误:结果的大小太大,无法表示为返回类型的值。 FE_UNDERFLOW 下溢范围错误:结果的大小太小而无法表示为返回类型的值。 FE_ALL_EXCEPT 所有异常(选择实现支持的所有异常)。 FE_
)。
返回值
零(如果没有例外)excepts被设置。否则,例外情况(包括excepts)当前设置。
示例
/* fetestexcept example */
#include <stdio.h> /* puts */
#include <fenv.h> /* feraiseexcept, fetestexcept, FE_* */
#pragma STDC FENV_ACCESS on
double fn (double x) {
/* some function for which zero is a domain and range error */
if (x==0.0) feraiseexcept(FE_INVALID|FE_OVERFLOW);
return x;
}
int main ()
{
int fe;
feclearexcept (FE_ALL_EXCEPT);
fn (0.0);
/* testing for single exception: */
if (fetestexcept(FE_OVERFLOW)) puts ("FE_OVERFLOW is set");
/* testing multiple exceptions: */
fe = fetestexcept (FE_ALL_EXCEPT);
puts ("The following exceptions are set:");
if (fe & FE_DIVBYZERO) puts ("FE_DIVBYZERO");
if (fe & FE_INEXACT) puts ("FE_INEXACT");
if (fe & FE_INVALID) puts ("FE_INVALID");
if (fe & FE_OVERFLOW) puts ("FE_OVERFLOW");
if (fe & FE_UNDERFLOW) puts ("FE_UNDERFLOW");
return 0;
}
可能的输出:
FE_OVERFLOW is set The following exceptions are set: FE_INVALID FE_OVERFLOW |
相关用法
- C语言 feclearexcept用法及代码示例
- C语言 feraiseexcept用法及代码示例
- C语言 fegetround用法及代码示例
- C语言 fesetround用法及代码示例
- C语言 feholdexcept用法及代码示例
- C语言 feupdateenv用法及代码示例
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C fetestexcept function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。