feraiseexcept
来自 cppreference.com
在头文件 <fenv.h> 中定义 |
||
int feraiseexcept( int excepts ); |
(自 C99 起) | |
尝试引发 excepts
中列出的所有浮点异常(浮点异常宏 的按位或)。如果异常之一是 FE_OVERFLOW 或 FE_UNDERFLOW,此函数可能还会引发 FE_INEXACT。异常引发的顺序未指定,但 FE_OVERFLOW 和 FE_UNDERFLOW 始终在 FE_INEXACT 之前引发。
内容 |
[编辑] 参数
excepts | - | 列出要引发的异常标志的位掩码 |
[编辑] 返回值
0 如果引发了所有列出的异常,否则为非零值。
[编辑] 示例
运行此代码
#include <stdio.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON void show_fe_exceptions(void) { printf("current exceptions raised: "); if(fetestexcept(FE_DIVBYZERO)) printf(" FE_DIVBYZERO"); if(fetestexcept(FE_INEXACT)) printf(" FE_INEXACT"); if(fetestexcept(FE_INVALID)) printf(" FE_INVALID"); if(fetestexcept(FE_OVERFLOW)) printf(" FE_OVERFLOW"); if(fetestexcept(FE_UNDERFLOW)) printf(" FE_UNDERFLOW"); if(fetestexcept(FE_ALL_EXCEPT)==0) printf(" none"); feclearexcept(FE_ALL_EXCEPT); printf("\n"); } double some_computation(void) { /* Computation reaches a state that causes overflow. */ int r = feraiseexcept(FE_OVERFLOW | FE_INEXACT); printf("feraiseexcept() %s\n", (r?"fails":"succeeds")); return 0.0; } int main(void) { some_computation(); show_fe_exceptions(); return 0; }
输出
feraiseexcept() succeeds current exceptions raised: FE_INEXACT FE_OVERFLOW