std::cout <<"Overflow flag before:" << (bool)std::fetestexcept(FE_OVERFLOW) << std::endl; std::cout <<"Underflow flag before:" << (bool)std::fetestexcept(FE_UNDERFLOW) << std::endl;
for(int i = 0; i < 20; ++i) { overflowing_var *= overflowing_var; underflowing_var *= underflowing_var; }
std::cout <<"Overflow flag after:" << (bool)std::fetestexcept(FE_OVERFLOW) << std::endl; std::cout <<"Underflow flag after:" << (bool)std::fetestexcept(FE_UNDERFLOW) << std::endl; }
/** Output: Overflow flag before: 0 Underflow flag before: 0 Overflow flag after: 1 Underflow flag after: 1 */
1 2 3 4 5
int feclearexcept(int); int fegetexceptflag(fexcept_t *, int); int feraiseexcept(int); int fesetexceptflag(const fexcept_t *, int); int fetestexcept(int);
1 2 3 4 5 6 7 8 9 10
{ double f; int raised; feclearexcept (FE_ALL_EXCEPT); f = compute (); raised = fetestexcept (FE_OVERFLOW | FE_INVALID); if (raised & FE_OVERFLOW) { /* ... */ } if (raised & FE_INVALID) { /* ... */ } /* ... */ }