C ++ feclearexcept () - Biblioteca standard C ++

Funcția feclearexcept () din C ++ încearcă să șteargă steagurile de excepție în virgulă mobilă specificate de excepția argumentului.

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

feclearexcept () Prototip

 int feclearexcept (int exceptie);

Pentru ca funcția să funcționeze, ar trebui să activați FENV_ACCESS , care va permite programului dvs. să acceseze mediul în virgulă mobilă pentru a testa excepțiile ridicate.

feclearexcept () Parametri

  • exceptează: listarea cu masca de biți a steagurilor de excepție de șters
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

feclearexcept () Valoare returnată

  • Funcția feclearexcept () returnează valoarea zero dacă toate excepțiile au fost șterse sau dacă excepțiile sunt egale cu zero.
  • Se întoarce diferit de zero dacă apare o eroare.

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

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

 1/0 = inf FE_DIVBYZERO este setat sqrt (-1) = -nan FE_INVALID este setat

Articole interesante...