| Functions | ||||
(C99) | ||||
(C99) | ||||
feraiseexcept (C99) | ||||
(C99)(C99) | ||||
(C99)(C99) | ||||
(C99) | ||||
(C99) | ||||
(C99) | ||||
| Macro constants | ||||
(C99) |
Defined in header <fenv.h> | ||
int feraiseexcept(int excepts); | (since C99) | |
Attempts to raise all floating-point exceptions listed inexcepts (a bitwise OR of thefloating-point exception macros). If one of the exceptions isFE_OVERFLOW orFE_UNDERFLOW, this function may additionally raiseFE_INEXACT. The order in which the exceptions are raised is unspecified, except thatFE_OVERFLOW andFE_UNDERFLOW are always raised beforeFE_INEXACT.
Contents |
| excepts | - | bitmask listing the exception flags to raise |
0 if all listed exceptions were raised, non-zero value otherwise.
#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"));return0.0;} int main(void){ some_computation(); show_fe_exceptions(); return0;}
Output:
feraiseexcept() succeedscurrent exceptions raised: FE_INEXACT FE_OVERFLOW
(C99) | clears the specified floating-point status flags (function)[edit] |
(C99) | determines which of the specified floating-point status flags are set (function)[edit] |
C++ documentation forferaiseexcept | |