_clear87
, _clearfp
Obtiene y borra la palabra de estado de punto flotante.
Sintaxis
unsigned int _clear87( void );
unsigned int _clearfp( void );
Valor devuelto
Los bits del valor devuelto indican el estado de punto flotante antes de llamar a _clear87
o a _clearfp
. Para ver una definición completa de los bits que devuelve _clear87
, vea Float.h. Muchas de las funciones de la biblioteca matemática modifican la palabra de estado 8087/80287 con resultados imprevisibles. Los valores devueltos de _clear87
y _status87
son más confiables si se realizan menos operaciones de punto flotante entre estados conocidos de la palabra de estado de punto flotante.
Comentarios
La función _clear87
borra las marcas de excepción de la palabra de estado de punto flotante, establece el bit de actividad en 0 y devuelve la palabra de estado. La palabra de estado de punto flotante es una combinación de la palabra de estado 8087/80287 y de otras condiciones detectadas por el controlador de excepciones 8087/80287 (por ejemplo, el desbordamiento y subdesbordamiento de la pila de punto flotante).
_clearfp
es una versión portátil e independiente de la plataforma de la rutina _clear87
. Es idéntico a _clear87
en plataformas Intel (x86) y también es compatible con las plataformas x64 y ARM. Para asegurarse de que el código de punto flotante se puede llevar a x64 y a ARM, use _clearfp
. Si solo tiene como destino plataformas x86, puede usar _clear87
o _clearfp
.
Estas funciones están en desuso cuando se compilan con /clr (Common Language Runtime Compilation) porque Common Language Runtime solo admite la precisión de punto flotante predeterminada.
Requisitos
Routine | Encabezado necesario |
---|---|
_clear87 |
<float.h> |
_clearfp |
<float.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_clear87.c
// compile with: /Od
// This program creates various floating-point
// problems, then uses _clear87 to report on these problems.
// Compile this program with Optimizations disabled (/Od).
// Otherwise the optimizer will remove the code associated with
// 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", _clear87() );
// Store into y is inexact and underflows:
y = a;
printf( "Status: %.4x - inexact, underflow\n", _clear87() );
// y is denormal:
b = y;
printf( "Status: %.4x - denormal\n", _clear87() );
}
Status: 0000 - clear
Status: 0003 - inexact, underflow
Status: 80000 - denormal
Vea también
Compatibilidad con cálculos matemáticos y el punto flotante
_control87
, , _controlfp
, __control87_2
_status87
, , _statusfp
, _statusfp2