feraiseexcept

来自cppreference.com
< c‎ | numeric‎ | fenv
在标头 <fenv.h> 定义
int feraiseexcept(int excepts );
(C99 起)

尝试引发所有列于 excepts浮点数异常宏的逐位或)的浮点数异常。若异常之一为 FE_OVERFLOWFE_UNDERFLOW,则此函数可以额外引发 FE_INEXACT。异常的引发顺序未指定,除了 FE_OVERFLOWFE_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

[编辑]引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.6.2.3 The feraiseexcept function (第 210 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.6.2.3 The feraiseexcept function (第 191 页)

[编辑]参阅

清除指定的浮点数异常状态标志
(函数)[编辑]
确认设置了哪些浮点数异常状态标志
(函数)[编辑]
feraiseexcept 的 C++ 文档
close