_clear87, _clearfp

Pobiera i czyści słowo stanu zmiennoprzecinkowego.

Składnia

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

Wartość zwracana

Bity w zwróconej wartości wskazują stan zmiennoprzecinkowa przed wywołaniem metody _clear87 lub _clearfp. Aby uzyskać pełną definicję bitów zwracanych przez _clear87element , zobacz Float.h. Wiele funkcji biblioteki matematycznej modyfikuje wyraz stanu 8087/80287 z nieprzewidywalnymi wynikami. Zwracanie wartości z _clear87 i _status87 staje się bardziej niezawodne, ponieważ mniej operacji zmiennoprzecinkowych jest wykonywanych między znanymi stanami słowa stanu zmiennoprzecinkowego.

Uwagi

Funkcja _clear87 czyści flagi wyjątków w słowie stanu zmiennoprzecinkowego, ustawia bit zajęty na wartość 0 i zwraca wyraz stanu. Słowo stanu zmiennoprzecinkowego jest kombinacją słowa stanu 8087/80287 i innych warunków wykrytych przez program obsługi wyjątków 8087/80287, takich jak przepełnienie stosu zmiennoprzecinkowego i niedopełnienie.

_clearfp jest niezależną od platformy, przenośną wersją _clear87 procedury. Jest ona identyczna z _clear87 platformami Intel (x86) i jest również obsługiwana przez platformy x64 i ARM. Aby upewnić się, że kod zmiennoprzecinkowa jest przenośny do architektury x64 i arm, użyj polecenia _clearfp. Jeśli używasz tylko platform x86, możesz użyć _clear87 polecenia lub _clearfp.

Te funkcje są przestarzałe podczas kompilowania z /clr (kompilacja środowiska uruchomieniowego języka wspólnego), ponieważ środowisko uruchomieniowe języka wspólnego obsługuje tylko domyślną precyzję zmiennoprzecinkową.

Wymagania

Procedura Wymagany nagłówek
_clear87 <float.h>
_clearfp <float.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

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

Zobacz też

Obsługa obliczeń matematycznych i zmiennoprzecinkowych
_control87, _controlfp, __control87_2
_status87, _statusfp, _statusfp2