_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 _clear87
element , 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