Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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