C ++ feclearexcept () - Libreria standard C ++

La funzione feclearexcept () in C ++ tenta di cancellare i flag di eccezione a virgola mobile specificati dall'argomento tranne.

La funzione feclearexcept () è definita nel file di intestazione.

feclearexcept () Prototipo

 int feclearexcept (int eccetto);

Affinché la funzione funzioni, è necessario abilitare FENV_ACCESS , che consentirà al programma di accedere all'ambiente in virgola mobile per testare le eccezioni sollevate.

Parametri feclearexcept ()

  • tranne: elenco maschera di bit dei flag di eccezione da cancellare
Bitmask ha accettato le macro
Macro genere Descrizione
FE_DIVBYZERO Errore di polo Divisione per zero
FE_INEXACT Inesatto Risultati non esatti come (1.0 / 3.0)
FE_INVALID Errore di dominio Almeno un argomento utilizzato è un valore per il quale la funzione non è definita
FE_OVERFLOW Errore di intervallo di overflow Il risultato è di grandezza troppo grande per essere rappresentato dal tipo restituito
FE_UNDERFLOW Errore di intervallo di underflow Il risultato è di grandezza troppo piccolo per essere rappresentato dal tipo restituito
FE_ALL_EXCEPT Tutte le eccezioni Tutte le eccezioni supportate dall'implementazione

feclearexcept () Restituisce il valore

  • La funzione feclearexcept () restituisce valore zero se tutte le eccezioni sono state cancellate o se eccezioni è uguale a zero.
  • Restituisce diverso da zero se si verifica un errore.

Esempio: come funziona la funzione 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; ) )

Quando esegui il programma, l'output sarà:

 1/0 = inf FE_DIVBYZERO è impostato sqrt (-1) = -nan FE_INVALID è impostato

Articoli interessanti...