C ++ fegetexceptflag () - štandardná knižnica C ++

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.
Bitmask akceptoval makra
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

Zaujímavé články...