C ++ fesetexceptflag () - C ++ Standardbibliotek

Fesetexceptflag () -funktionen i C ++ indstiller angivne undtagelsesflag for flydende punkt fra et markørobjekt til det flydende punktmiljø.

Funktionen fesetexceptflag () er defineret i headerfilen.

fesetexceptflag () prototype

 int fesetexceptflag (const fexcept_t * flagp, int excepts);

Funktionen fesetexceptflag () forsøger at kopiere alt indholdet af undtagelsesflagene med flydende punkt, der er angivet med undtagelser fra flagp, til flydende punktmiljøet.

Denne funktion ændrer kun flagene og hæver ikke nogen undtagelser.

fesetexceptflag () Parametre

  • flagp: En markør til et fexcept_t-objekt, hvor flagene læses fra.
  • excepts: Bitmask-liste over undtagelsesflag, der skal indstilles.
Bitmask accepterede makroer
Makro Type Beskrivelse
FE_DIVBYZERO Stangfejl Opdeling med nul
FE_INEXACT Inexakt Ikke nøjagtige resultater såsom (1.0 / 3.0)
FE_INVALID Domæne fejl Mindst et anvendt argument er en værdi, som funktionen ikke er defineret for
FE_OVERFLOW Fejl ved overløbsområde Resultatet er for stort i størrelse til at blive repræsenteret af returtypen
FE_UNDERFLOW Fejl i underflowområdet Resultatet er for lille i størrelse til at blive repræsenteret af returtypen
FE_ALL_EXCEPT Alle undtagelser Alle undtagelser understøttet af implementeringen

fesetexceptflag () Returværdi

  • Funktionen fesetexceptflag () returnerer nul efter succes, ellers nul.

Eksempel: Hvordan fungerer funktionen 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; )

Når du kører programmet, vil output være:

 Hævede undtagelser: FE_DIVBYZERO Højde undtagelser: FE_DIVBYZERO FE_INVALID FE_OVERFLOW Hævede undtagelser: FE_DIVBYZERO

Interessante artikler...