La función feclearexcept () en C ++ intenta borrar los indicadores de excepción de punto flotante especificados por el argumento excepts.
La función feclearexcept () se define en el archivo de encabezado.
feclearexcept () Prototipo
int feclearexcept (int excepciones);
Para que la función funcione, debe habilitar FENV_ACCESS , lo que le permitirá a su programa acceder al entorno de punto flotante para probar las excepciones generadas.
Parámetros feclearexcept ()
- excepciones: lista de máscara de bits de banderas de excepción para borrar
Macro | Tipo | Descripción |
---|---|---|
FE_DIVBYZERO | Error de polo | División por cero |
FE_INEXACT | Inexacto | Resultados no exactos como (1.0 / 3.0) |
FE_INVALID | Error de dominio | Al menos uno de los argumentos utilizados es un valor para el que la función no está definida |
FE_OVERFLOW | Error de rango de desbordamiento | El resultado es demasiado grande en magnitud para ser representado por el tipo de retorno |
FE_UNDERFLOW | Error de rango de subdesbordamiento | El resultado es demasiado pequeño en magnitud para ser representado por el tipo de retorno |
FE_ALL_EXCEPT | Todas las excepciones | Todas las excepciones respaldadas por la implementación |
feclearexcept () Valor de retorno
- La función feclearexcept () devuelve un valor cero si se borraron todas las excepciones o si las excepciones son iguales a cero.
- Devuelve un valor distinto de cero si se produce algún error.
Ejemplo: ¿Cómo funciona la función 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; ) )
Cuando ejecute el programa, la salida será:
1/0 = inf FE_DIVBYZERO está establecido sqrt (-1) = -nan FE_INVALID está establecido