C ++ fesetexceptflag () - C ++ standarta bibliotēka

Funkcija fesetexceptflag () programmā C ++ nosaka norādītos peldošā komata izņēmuma karodziņus no rādītāja objekta peldošā komata vidē.

Funkcija fesetexceptflag () ir definēta galvenes failā.

fesetexceptflag () prototips

 int fesetexceptflag (const fexcept_t * flagp, int izslēdz);

Funkcija fesetexceptflag () mēģina kopēt visu ar izņēmumiem norādīto peldošā komata izņēmuma karodziņu saturu no flagp peldošā komata vidē.

Šī funkcija tikai modificē karodziņus un nerada nekādus izņēmumus.

fesetexceptflag () parametri

  • flagp: rādītājs objektam fexcept_t, no kura tiks nolasīti karodziņi.
  • izņēmumi: iestatāmo izņēmumu karodziņu saraksts Bitmask.
Bitmasks pieņēma makro
Makro Tips Apraksts
FE_DIVBYZERO Pole kļūda Dalīšana ar nulli
FE_INEXACT Neprecīzi Nav precīzi rezultāti, piemēram, (1.0 / 3.0)
FE_INVALID Domēna kļūda Vismaz viens izmantotais arguments ir vērtība, kurai funkcija nav definēta
FE_OVERFLOW Pārplūdes diapazona kļūda Rezultāts ir pārāk liels, lai to attēlotu ar atgriešanās veidu
FE_UNDERFLOW Pārplūdes diapazona kļūda Rezultāts ir pārāk mazs, lai to attēlotu ar atgriešanās veidu
FE_ALL_EXCEPT Visi izņēmumi Visi izņēmumi, kurus atbalsta ieviešana

fesetexceptflag () Atgriežamā vērtība

  • Funkcija fesetexceptflag () pēc panākumiem atgriež nulli, pretējā gadījumā nulle.

Piemērs: Kā darbojas funkcija fesetexceptflag ()?

 #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; )

Palaidot programmu, izeja būs:

 Paaugstinātie izņēmumi: FE_DIVBYZERO Paaugstinātie izņēmumi: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Paaugstinātie izņēmumi: FE_DIVBYZERO

Interesanti raksti...