feraiseexcept
|
Определено в заголовочном файле
<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)
Смотрите также
|
(C99)
|
очищает указанные флаги состояния чисел с плавающей точкой
(функция) |
|
(C99)
|
определяет, какие из указанных флагов состояния чисел с плавающей точкой установлены
(функция) |
|
Документация C++
для
feraiseexcept
|
|