C ++ feclearexcept () - štandardná knižnica C ++

Funkcia feclearexcept () v C ++ sa pokúša vyčistiť príznaky výnimiek s pohyblivou rádovou čiarkou špecifikované argumentom s výnimkou.

Funkcia feclearexcept () je definovaná v hlavičkovom súbore.

feclearexcept () prototyp

 int feclearexcept (okrem);

Aby táto funkcia fungovala, mali by ste povoliť FENV_ACCESS , ktorá umožní vášmu programu prístup do prostredia s pohyblivou rádovou čiarkou na otestovanie vyvolaných výnimiek.

parametre feclearexceptu ()

  • výnimky: Vymazanie zoznamu bitových masiek príznakov výnimiek
Bitmask akceptoval makra
Makro Typ Popis
FE_DIVBYZERO Chyba pólu Delenie nulou
FE_INEXACT Nepresné Nie presné výsledky, ako napríklad (1,0 / 3,0)
FE_INVALID Chyba domény Aspoň jeden použitý argument je hodnota, pre ktorú nie je funkcia definovaná
FE_OVERFLOW Chyba rozsahu pretečenia Výsledok je príliš veľký na to, aby bol reprezentovaný návratovým typom
FE_UNDERFLOW Chyba rozsahu podtečenia Výsledok je príliš malý na to, aby bol reprezentovaný návratovým typom
FE_ALL_EXCEPT Všetky výnimky Všetky výnimky podporované implementáciou

feclearexcept () Vrátená hodnota

  • Funkcia feclearexcept () vráti nulovú hodnotu, ak boli vymazané všetky výnimky alebo ak je výnimka rovná nule.
  • V prípade akejkoľvek chyby vráti nenulovú hodnotu.

Príklad: Ako funguje funkcia 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; ) )

Po spustení programu bude výstup:

 1/0 = inf FE_DIVBYZERO je nastavený sqrt (-1) = -nan FE_INVALID je nastavený

Zaujímavé články...