std::feraiseexcept
Определено в заголовке <cfenv> |
||
|---|---|---|
int feraiseexcept( int excepts ); |
(с C++11) |
Попытка поднять все исключения с плавающей запятой, перечисленные в excepts (побитовое ИЛИ макросов исключений с плавающей запятой). Если одно из исключений — FE_OVERFLOW или FE_UNDERFLOW, эта функция может дополнительно поднять FE_INEXACT. Порядок поднятия исключений не определён, за исключением того, что FE_OVERFLOW и FE_UNDERFLOW всегда поднимаются до FE_INEXACT.
Параметры
| excepts | - | битовая маска, перечисляющая флаги исключений для поднятия |
Возвращаемое значение
0 если все указанные исключения были подняты, в противном случае ненулевое значение.
Пример
#include <cfenv>
#include <iostream>
// #pragma STDC FENV_ACCESS ON
int main()
{
std::feclearexcept(FE_ALL_EXCEPT);
const int r = std::feraiseexcept(FE_UNDERFLOW | FE_DIVBYZERO);
std::cout << "Raising divbyzero and underflow simultaneously "
<< (r ? "fails" : "succeeds") << " and results in\n";
const int e = std::fetestexcept(FE_ALL_EXCEPT);
if (e & FE_DIVBYZERO)
std::cout << "division by zero\n";
if (e & FE_INEXACT)
std::cout << "inexact\n";
if (e & FE_INVALID)
std::cout << "invalid\n";
if (e & FE_UNDERFLOW)
std::cout << "underflow\n";
if (e & FE_OVERFLOW)
std::cout << "overflow\n";
}Вывод:
Raising divbyzero and underflow simultaneously succeeds and results in division by zero underflow
См. также
|
(C++11) |
очищает указанные флаги состояния с плавающей запятой (функция) |
|
(C++11) |
определяет, какие из указанных флагов состояния с плавающей запятой установлены (функция) |
Документация на C для feraiseexcept |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/fenv/feraiseexcept