Funkcia fegetexceptflag () v C ++ dostane príznaky výnimky s pohyblivou desatinnou čiarkou, ktoré sú uvedené v argumente, a uloží ju v bode určenom parametrom flagp.
Funkcia fetgetexceptflag () je definovaná v hlavičkovom súbore.
prototyp fegetexceptflag ()
int fegetexceptflag (fexcept_t * flagp, int výnimky);
Výnimkou argumentu môže byť bitové ALEBO makier výnimky s pohyblivou rádovou čiarkou.
parametre fegetexceptflag ()
- flagp: Ukazovateľ na objekt fexcept_t, kde budú uložené príznaky.
- výnimky: Zoznam bitmasiek zoznamov príznakov výnimiek, ktoré získate.
Makro | Typ | Popis |
---|---|---|
FE_DIVBYZERO | Chyba pólu | Delenie nulou |
FE_INEXACT | Nepresné | Nie presné výsledky, ako napríklad (1,0 / 3,0) |
FE_INVALID | Chyba domény | Aspoň jeden použitý argument je hodnota, pre ktorú nie je funkcia definovaná |
FE_OVERFLOW | Chyba rozsahu pretečenia | Výsledok je príliš veľký na to, aby bol reprezentovaný návratovým typom |
FE_UNDERFLOW | Chyba rozsahu podtečenia | Výsledok je príliš malý na to, aby bol reprezentovaný návratovým typom |
FE_ALL_EXCEPT | Všetky výnimky | Všetky výnimky podporované implementáciou |
fegetexceptflag () Vrátená hodnota
- Funkcia fegetexceptflag () vráti pri úspechu nulu, inak nenulové.
Príklad: Ako funguje funkcia fegetexceptflag ()?
#include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) int main() ( fexcept_t excepts; feraiseexcept(FE_DIVBYZERO); /* save current state*/ fegetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); feraiseexcept(FE_INVALID|FE_OVERFLOW); print_exceptions(); /* restoring previous exceptions */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); return 0; )
Po spustení programu bude výstup:
Zvýšené výnimky: FE_DIVBYZERO Zvýšené výnimky: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Zvýšené výnimky: FE_DIVBYZERO