C ++ feclearexcept () - C ++ standaardbibliotheek

De functie feclearexcept () in C ++ probeert de uitzonderingsvlaggen met drijvende komma te wissen die zijn gespecificeerd door het argument excepts.

De functie feclearexcept () is gedefinieerd in het header-bestand.

feclearexcept () Prototype

 int feclearexcept (int behalve);

Om de functie te laten werken, moet u FENV_ACCESS inschakelen , wat uw programma toegang geeft tot de Floating point-omgeving om de opgeworpen uitzonderingen te testen.

feclearexcept () Parameters

  • behalve: Bitmask-lijst met uitzonderingsvlaggen die moeten worden gewist
Bitmask geaccepteerde macro's
Macro Type Omschrijving
FE_DIVBYZERO Poolfout Deling door nul
FE_INEXACT Inexact Niet exacte resultaten zoals (1.0 / 3.0)
FE_INVALID Domeinfout Ten minste één van de gebruikte argumenten is een waarde waarvoor de functie niet is gedefinieerd
FE_OVERFLOW Fout overloopbereik Het resultaat is te groot om te worden weergegeven door het retourtype
FE_UNDERFLOW Fout onderstroombereik Het resultaat is te klein om te worden weergegeven door het retourtype
FE_ALL_EXCEPT Alle uitzonderingen Alle uitzonderingen ondersteund door de implementatie

feclearexcept () Retourwaarde

  • De functie feclearexcept () retourneert de waarde nul als alle uitzonderingen zijn gewist of als de uitzonderingen gelijk zijn aan nul.
  • Het retourneert niet-nul als er een fout optreedt.

Voorbeeld: hoe werkt de functie feclearexcept ()?

 #include #include #include #pragma STDC FENV_ACCESS ON using namespace std; int main() ( // clears all exceptions feclearexcept(FE_ALL_EXCEPT); cout << "1/0 = " << 1.0/0.0 << endl; // tests if above statement raised the FE_DIVBYZERO exception if(fetestexcept(FE_DIVBYZERO)) ( cout << "FE_DIVBYZERO is set" << endl; ) else ( cout << "FE_DIVBYZERO is not set" << endl; ) feclearexcept(FE_ALL_EXCEPT); cout << "sqrt(-1) = " << sqrt(-1) << endl; if(fetestexcept(FE_INVALID)) ( cout << "FE_INVALID is set" << endl; ) else ( cout << "FE_INVALID is not set" << endl; ) )

Wanneer u het programma uitvoert, is de uitvoer:

 1/0 = inf FE_DIVBYZERO is ingesteld sqrt (-1) = -nan FE_INVALID is ingesteld

Interessante artikelen...