Namespaces
Variants

std:: feraiseexcept

From cppreference.net
Floating-point environment
Functions
feraiseexcept
(C++11)
(C++11) (C++11)
(C++11) (C++11)
Macro constants
(C++11)
헤더 파일에 정의됨 <cfenv>
int feraiseexcept ( int excepts ) ;
(C++11 이후)

excepts 에 나열된 모든 부동 소수점 예외( 부동 소수점 예외 매크로 의 비트 OR)를 발생시키려 시도합니다. 예외 중 하나가 FE_OVERFLOW 또는 FE_UNDERFLOW 인 경우, 이 함수는 추가적으로 FE_INEXACT 를 발생시킬 수 있습니다. 예외가 발생하는 순서는 명시되지 않았으나, FE_OVERFLOW FE_UNDERFLOW 는 항상 FE_INEXACT 보다 먼저 발생합니다.

목차

매개변수

excepts - 발생시킬 예외 플래그들을 나열하는 비트마스크

반환값

0 나열된 모든 예외가 발생한 경우 0, 그렇지 않으면 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 documentation for feraiseexcept