feraiseexcept
來自 cppreference.com
定義於標頭檔案 <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