_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();
}
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.