función fegetexceptflag() en C/C++

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 :

  1. FE_DIVBYZERO –> Error de polo: División por cero.
  2. FE_INEXACT –> Inexacto: El resultado no es exacto.
  3. FE_INVALID –> Error de dominio: Al menos uno de los argumentos es un valor para el cual la función no está definida.
  4. FE_OVERFLOW –> Error de rango de desbordamiento: el resultado es demasiado grande.
  5. FE_UNDERFLOW –> Error de rango de subdesbordamiento: el resultado es demasiado pequeño.
  6. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *