Namespaces
Variants

feraiseexcept

From cppreference.net
< c ‎ | numeric ‎ | fenv
Определено в заголовочном файле <fenv.h>
int feraiseexcept ( int excepts ) ;
(начиная с C99)

Пытается поднять все исключения с плавающей точкой, перечисленные в excepts (побитовое ИЛИ макросов исключений с плавающей точкой ). Если одним из исключений является FE_OVERFLOW или FE_UNDERFLOW , эта функция может дополнительно поднять FE_INEXACT . Порядок, в котором исключения поднимаются, не определён, за исключением того, что FE_OVERFLOW и FE_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)
{
    /* Computation reaches a state that causes overflow. */
    int r = feraiseexcept(FE_OVERFLOW | FE_INEXACT);
    printf("feraiseexcept() %s\n", (r?"fails":"succeeds"));
    return 0.0;
}
int main(void)
{
    some_computation();
    show_fe_exceptions();
    return 0;
}

Вывод:

feraiseexcept() succeeds
current exceptions raised:  FE_INEXACT FE_OVERFLOW

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.6.2.3 Функция feraiseexcept (стр. 210)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.6.2.3 Функция feraiseexcept (стр. 191)

Смотрите также

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