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){/* 计算达到引发上溢的状态。 */int r = feraiseexcept(FE_OVERFLOW|FE_INEXACT);printf("feraiseexcept() %s\n", (r?"fails":"succeeds"));return0.0;} int main(void){ some_computation(); show_fe_exceptions(); return0;}
输出:
feraiseexcept() succeeds current exceptions raised: FE_INEXACT FE_OVERFLOW