feraiseexcept
|
ヘッダー
<fenv.h>
で定義
|
||
|
int
feraiseexcept
(
int
excepts
)
;
|
(C99以降) | |
excepts
にリストされているすべての浮動小数点例外(
浮動小数点例外マクロ
のビット単位のOR)を発生させようと試みます。例外の一つが
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関数 (p: 210)
- C99標準 (ISO/IEC 9899:1999):
-
- 7.6.2.3 feraiseexcept関数 (p: 191)
関連項目
|
(C99)
|
指定された浮動小数点ステータスフラグをクリアする
(関数) |
|
(C99)
|
設定されている指定された浮動小数点ステータスフラグを判定する
(関数) |
|
C++ドキュメント
for
feraiseexcept
|
|