Spec-Zone.ru › C++

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

См. также

feclearexcept
(C++11)
сбрасывает указанные флаги состояния с плавающей точкой
(функция)
fetestexcept
(C++11)
определяет, какие из указанных флагов состояния с плавающей точкой установлены
(функция)
Документация по C для feraiseexcept

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/fenv/feraiseexcept

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API