C ++ fegetexceptflag () - C ++ standartinė biblioteka

C ++ funkcija fegetexceptflag () gauna slankiojo kablelio išimčių vėliavas, nurodytas argumente, kurias jis išskiria, ir saugo ją flagp nurodytame taške.

Funkcija fetgetexceptflag () yra apibrėžta antraštės faile.

fegetexceptflag () prototipas

 int fegetexceptflag (fexcept_t * flagp, int išskyrus);

Argumentas „nepaiso“ gali būti slankiojo kablelio išimties makrokomandų bitų ARBA

fegetexceptflag () parametrai

  • flagp: žymeklis į objektą fexcept_t, kuriame bus saugomos vėliavos.
  • išskyrus: „Bitmask“ sąrašas išimčių vėliavų gauti.
„Bitmask“ priėmė makrokomandas
Makrokomanda Tipas apibūdinimas
FE_DIVBYZERO Pole klaida Dalyba iš nulio
FE_INEXACT Tikslus Netikslūs rezultatai, pvz., (1.0 / 3.0)
FE_INVALID Domeno klaida Bent vienas naudojamas argumentas yra reikšmė, kuriai funkcija nėra apibrėžta
FE_OVERFLOW Perpildymo diapazono klaida Rezultatas yra per didelis, kad būtų galima parodyti grąžinimo tipą
FE_UNDERFLOW Nepakankamo diapazono klaida Rezultatas yra per mažas, kad būtų galima pateikti grąžinimo tipą
FE_ALL_EXCEPT Visos išimtys Visos išimtys, kurias palaiko įgyvendinimas

fegetexceptflag () Grąžinimo vertė

  • Funkcija „fegetexceptflag ()“ sėkmės atveju grąžina nulį, kitaip - nulis.

Pavyzdys: Kaip veikia funkcija 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; )

Kai paleisite programą, išvestis bus:

 Iškeltos išimtys: FE_DIVBYZERO Iškeltos išimtys: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Iškeltos išimtys: FE_DIVBYZERO

Įdomios straipsniai...