_clear87, _clearfp

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Obtiene y borra la palabra de estado de punto flotante.

unsigned int _clear87( void );  
unsigned int _clearfp( void );  

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.

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éntica 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 va a usar plataformas x86, puede usar _clear87 o _clearfp.

Estas funciones están desusadas cuando se compila con /clr (compilación de Common Language Runtime) o /clr:pure porque common language runtime sólo admite la precisión de punto flotante predeterminada.

RutinaEncabezado necesario
_clear87<float.h>
_clearfp<float.h>

Para obtener más información sobre compatibilidad, vea Compatibility en la introducción.

// 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  

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

Compatibilidad de punto flotante
_control87, _controlfp, __control87_2
_status87, _statusfp, _statusfp2

Mostrar: