La fonction feclearexcept () en C ++ tente d'effacer les indicateurs d'exception en virgule flottante spécifiés par l'argument excepts.
La fonction feclearexcept () est définie dans le fichier d'en-tête.
Prototype de feclearexcept ()
int feclearexcept (int sauf);
Pour que la fonction fonctionne, vous devez activer FENV_ACCESS , ce qui donnera à votre programme l'accès à l'environnement en virgule flottante pour tester les exceptions soulevées.
Paramètres de feclearexcept ()
- sauf: liste de masque de bits des indicateurs d'exception à effacer
Macro | Type | La description |
---|---|---|
FE_DIVBYZERO | Erreur de pôle | Division par zéro |
FE_INEXACT | Inexact | Résultats non exacts tels que (1.0 / 3.0) |
FE_INVALID | Erreur de domaine | Au moins un argument utilisé est une valeur pour laquelle la fonction n'est pas définie |
FE_OVERFLOW | Erreur de plage de débordement | Le résultat est trop grand pour être représenté par le type de retour |
FE_UNDERFLOW | Erreur de plage de dépassement inférieur | Le résultat est trop petit pour être représenté par le type de retour |
FE_ALL_EXCEPT | Toutes les exceptions | Toutes les exceptions prises en charge par la mise en œuvre |
feclearexcept () Valeur de retour
- La fonction feclearexcept () renvoie une valeur nulle si toutes les exceptions ont été effacées ou si excepts est égal à zéro.
- Il renvoie une valeur différente de zéro si une erreur se produit.
Exemple: Comment fonctionne la fonction 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; ) )
Lorsque vous exécutez le programme, la sortie sera:
1/0 = inf FE_DIVBYZERO est défini sqrt (-1) = -nan FE_INVALID est défini