La función fegetexceptflag() en C/C++ se especifica en el archivo de encabezado fenv.h y obtiene indicadores de excepción de coma flotante. Esta función almacena la excepción generada en el punto especificado por flagp .
Sintaxis:
int fegetexceptflag(fexcept_t* flagp, int excepts)
Parámetros: La función acepta dos parámetros obligatorios que se describen a continuación:
- flagp : significa el puntero a un objeto fexcept_t donde se almacena la representación.
- excepts: significa el valor de la máscara de bits.
Macro –> Descripción :
- FE_DIVBYZERO –> Error de polo: División por cero.
- FE_INEXACT –> Inexacto: El resultado no es exacto.
- FE_INVALID –> Error de dominio: Al menos uno de los argumentos es un valor para el cual la función no está definida.
- FE_OVERFLOW –> Error de rango de desbordamiento: el resultado es demasiado grande.
- FE_UNDERFLOW –> Error de rango de subdesbordamiento: el resultado es demasiado pequeño.
- FE_ALL_EXCEPT –> Todas las excepciones.
Valor devuelto: la función devuelve dos valores como se muestra a continuación:
- Cero: en el éxito.
- Distinto de cero: en caso de falla
Los siguientes programas ilustran la función anterior:
Programa 1:
// C++ program to illustrate // fegetexceptflag() function #include <bits/stdc++.h> using namespace std; int main() { // bitmask value fexcept_t excepts; // divided by zero exception feraiseexcept(FE_DIVBYZERO); // current state is saved fegetexceptflag(&excepts, FE_ALL_EXCEPT); cout << "Exception raised -> \n"; // print the exception occurred if (fetestexcept(FE_ALL_EXCEPT)) { if (fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO \n"; if (fetestexcept(FE_INEXACT)) cout << "FE_INEXACT \n"; if (fetestexcept(FE_INVALID)) cout << "FE_INVALID \n"; if (fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW \n"; if (fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW \n"; if (fetestexcept(FE_ALL_EXCEPT)) cout << "FE_ALL_EXCEPT \n"; } else cout << "None"; return 0; }
Producción:
Exception raised -> FE_DIVBYZERO FE_ALL_EXCEPT
Programa 2:
// C++ program to illustrate // fegetexceptflag() function #include <bits/stdc++.h> using namespace std; int main() { // bitmask value fexcept_t excepts; // raised exception feraiseexcept(FE_ALL_EXCEPT); // current state is saved fegetexceptflag(&excepts, FE_ALL_EXCEPT); cout << "Exception raised -> \n"; // print the exception occurred if (fetestexcept(FE_ALL_EXCEPT)) { if (fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO \n"; if (fetestexcept(FE_INEXACT)) cout << "FE_INEXACT \n"; if (fetestexcept(FE_INVALID)) cout << "FE_INVALID \n"; if (fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW \n"; if (fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW \n"; if (fetestexcept(FE_ALL_EXCEPT)) cout << "FE_ALL_EXCEPT \n"; } else cout << "None"; return 0; }
Producción:
Exception raised -> FE_DIVBYZERO FE_INEXACT FE_INVALID FE_OVERFLOW FE_UNDERFLOW FE_ALL_EXCEPT
Publicación traducida automáticamente
Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA