C ++ fegetexceptflag () - Biblioteca standard C ++

Funcția fegetexceptflag () din C ++ primește stegulețe de excepție în virgulă mobilă, specificând argumentul excepție și îl stochează în punctul specificat de flagp.

Funcția fetgetexceptflag () este definită în fișierul antet.

fegetexceptflag () prototip

 int fegetexceptflag (fexcept_t * flagp, int exceptează);

Argumentul cu excepția poate fi OR în sensul bitului al macro-urilor de excepție în virgulă mobilă.

fegetexceptflag () Parametri

  • flagp: un pointer către un obiect fexcept_t în care vor fi stocate steagurile.
  • excepts: listarea Bitmask a steagurilor de excepție de obținut.
Bitmask a acceptat macrocomenzi
Macro Tip Descriere
FE_DIVBYZERO Eroare polară Impartirea cu zero
FE_INEXACT Inexact Nu sunt rezultate exacte, cum ar fi (1.0 / 3.0)
FE_INVALID Eroare de domeniu Cel puțin un argument utilizat este o valoare pentru care funcția nu este definită
FE_OVERFLOW Eroare de depășire Rezultatul este prea mare ca mărime pentru a fi reprezentat de tipul returnat
FE_UNDERFLOW Eroare de subdezvoltare Rezultatul este prea mic ca mărime pentru a fi reprezentat de tipul returnat
FE_ALL_EXCEPT Toate excepțiile Toate excepțiile acceptate de implementare

fegetexceptflag () Valoare returnată

  • Funcția fegetexceptflag () returnează zero la succes, altfel altul decât zero.

Exemplu: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 Excepții crescute: FE_DIVBYZERO Excepții crescute: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Excepții crescute: FE_DIVBYZERO

Articole interesante...