名前空間
変種
操作

std::feraiseexcept

From cppreference.com
< cpp‎ | numeric‎ | fenv
 
 
 
浮動小数点環境
関数
feraiseexcept
(C++11)
(C++11)(C++11)
(C++11)(C++11)
マクロ定数
(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 リストされたすべての例外が発生した場合。それ以外の場合はゼロ以外の値。

[編集]

#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 のドキュメントferaiseexceptについて)
English 日本語 中文(简体) 中文(繁體)