_status87, _statusfp, _statusfp2

Obtenga la palabra de estado de punto flotante.

unsigned int _status87( void );
unsigned int _statusfp( void );
void _statusfp2(unsigned int *px86, unsigned int *pSSE2)

Parámetros

  • px86
    Rellenan esta dirección con la palabra de estado para la unidad de punto flotante x87.

  • pSSE2
    Rellenan esta dirección con la palabra de estado para la unidad de punto flotante SSE2.

Valor devuelto

Para _status87 y _statusfp, los bits del valor devuelto indican el estado flotante.Vea el archivo de inclusión de FLOAT.H para una definición completa de los bits devueltos por _status87.Muchas funciones de la librería matemática modifican la palabra de estado de 8087/80287, con resultados imprevisibles.Los valores devueltos de _clear87 y _status87 son más previsibles si menos operaciones de punto flotante se realizan entre estados conocidas de word de estado flotante._statusfp2 no tiene ningún valor devuelto.

Comentarios

la función de _status87 obtiene la palabra de estado flotante.La palabra de estado es una combinación de palabras de estado de 8087/80287/80387 y otras condiciones detectadas por el controlador de excepciones de 8087/80287/80387, como desbordamiento de pila y subdesbordamiento de punto flotante.Las excepciones desenmascaradas se comprueban para ver si hay antes de devolver el contenido de word de estado.Esto significa que el llamador recibe información de excepciones pendientes.

_statusfp es una plataforma-independiente, versión portable de _status87.Es idéntico a _status87 en plataformas Intel (x86) y también es compatible con la plataforma de MIPS.Para asegurarse de que el código flotante sea portable a MIPS, utilice _statusfp.Si usa como destino sólo las plataformas x86, utilice _status87 o _statusfp.

_statusfp2 se recomienda para los chips (como Pentium IV y más adelante) que tienen un x87 y un procesador de punto flotante SSE2.Para _statusfp2, completan las direcciones con la palabra de estado flotante para el x87 o el procesador de coma flotante SSE2.Al utilizar chip que admite los procesadores de punto flotante x87 y SSE2, EM_AMBIGUOUS se establece en 1 si se utiliza _statusfp o _controlfp y la acción es ambigua porque podría referirse a x87 o la palabra de estado flotante SSE2.

Se han dejado de utilizar estas funciones al compilar con /clr (Compilación de Common Language Runtime) o /clr:pure porque Common Language Runtime admite únicamente la precisión flotante predeterminada.

Requisitos

rutina

Encabezado necesario

_status87, _statusfp, _statusfp2

<float.h>

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

Ejemplo

// crt_status87.c
// This program creates various floating-point errors and
// then uses _status87 to display messages indicating these problems.
// Compile this program with optimizations disabled (/Od). Otherwise,
// the optimizer removes the code related to the unused floating-
// point values.
//

#include <stdio.h>
#include <float.h>

int main( void )
{
   double a = 1e-40, b;
   float  x, y;

   printf( "Status = %.4x - clear\n",_status87() );

   // Assignment into y is inexact & underflows: 
   y = a;
   printf( "Status = %.4x - inexact, underflow\n", _status87() );

   // y is denormal: 
   b = y;
   printf( "Status = %.4x - inexact underflow, denormal\n", 
           _status87() );

   // Clear user 8087: 
   _clear87();
}
  estado = 0000 - claro
estado = 0003 - inexacto, subdesbordamiento
estado = 80003 - subdesbordamiento inexacto, denormal

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Vea también

Referencia

Compatibilidad de punto flotante

_clear87, _clearfp

_control87, _controlfp, __control87_2