Feraiseexcept () -funktionen i C ++ försöker höja alla undantag för flytande punkter som anges i argumentet.
Funktionen feraiseexcept () definieras i rubrikfilen.
feraiseexcept () prototyp
int feraiseexcept (int excepts);
De undantag för flytande punkter som ska höjas listas i argumenten excepts.
Du bör också aktivera FENV_ACCESS , vilket ger ditt program åtkomst till den flytande punktmiljön för att testa undantagen.
feraiseexcept () Parametrar
- excepts: Bitmask-lista över undantagsflaggor att höja.
Makro | Typ | Beskrivning |
---|---|---|
FE_DIVBYZERO | Polfel | Dividera med noll |
FE_INEXACT | Inexakt | Inte exakta resultat som (1.0 / 3.0) |
FE_INVALID | Domänfel | Åtminstone ett argument som används är ett värde för vilket funktionen inte är definierad |
FE_OVERFLOW | Fel på överflödesintervall | Resultatet är för stort i storlek för att representeras av returtypen |
FE_UNDERFLOW | Fel på underflödesintervall | Resultatet är för litet i storlek för att representeras av returtypen |
FE_ALL_EXCEPT | Alla undantag | Alla undantag som stöds av implementeringen |
feraiseexcept () Returvärde
- Funktionen feraiseexcept () returnerar nollvärde om alla undantag som anges av excepts höjs.
- Annars returnerar det ett icke-nollvärde.
Exempel: Hur feraiseexcept () fungerar
#include #include #pragma STDC FENV_ACCESS ON using namespace std; int main() ( int retVal; feclearexcept(FE_ALL_EXCEPT); retVal = feraiseexcept(FE_OVERFLOW | FE_INVALID); if (retVal == 0) cout << "Successfully raised FE_OVERFLOW and FE_INVALID" << endl; else cout << "Raising FE_OVERFLOW and FE_INVALID failed" << endl; return 0; )
När du kör programmet blir resultatet:
Lyckades upp FE_OVERFLOW och FE_INVALID