_status87, _statusfp, _statusfp2
Pobiera wyrazy stanu zmiennoprzecinkowe.
unsigned int _status87( void );
unsigned int _statusfp( void );
void _statusfp2(unsigned int *px86, unsigned int *pSSE2)
Parametry
px86
Ten adres jest wypełniony wyrazami stanu dla jednostki zmiennoprzecinkowej x87.pSSE2
Ten adres jest wypełniony wyrazami stanu dla jednostki zmiennoprzecinkowej SSE2.
Wartość zwracana
W przypadku _status87 i _statusfp, bity w wartości zwracanej wskazują status sterowania zmiennoprzecinkowego.Zobacz FLOAT.H zawierający plik, aby uzyskać pełną definicję bitów, które są zwracane przez _statusfp.Wiele funkcji bibliotek matematycznych modyfikuje stanu wyrazu jednostki zmiennoprzecinkowej z trudnymi do przewidzenia skutkami.Optymalizacja można zmienić kolejność, łączenia i wyeliminować operacje zmiennoprzecinkowe wokół wywołania _status87, _statusfpi pokrewne funkcje.Użycie /Od (Wyłącz (Debuguj)) opcję kompilatora lub fenv_access dyrektywy pragmy w celu przeciwdziałania optymalizacje, które zmienić kolejność operacji zmiennoprzecinkowych.Zwracane wartości _clearfp i _statusfp, a także zwrotu parametry _statusfp2, są bardziej wiarygodne, gdy mniej operacje zmiennoprzecinkowe są wykonywane między Państwami znane słowa stanu zmiennoprzecinkowego.
Uwagi
_statusfp funkcja pobiera zmiennoprzecinkowe wyrazy stanu.Wyrazy stanu jest kombinacją stanu zmiennoprzecinkowego procesora i innych warunków wykrytych przez program obsługi wyjątków zmiennoprzecinkowych — na przykład przepełnienie stosu zmiennoprzecinkowego i niedomiaru.Zaznaczona wyjątki są sprawdzane zanim zawartości wyrazów stanu są zwracane.Oznacza to, że obiekt wywołujący jest informowany o oczekujących wyjątkach.Na platformach x86, _statusfp zwraca połączenie x87 i stan zmiennoprzecinkowego SSE2.Na platformach x64, stan, który jest zwracany jest oparty na stanie SSE MXCSR.Na platformach ARM _statusfp zwraca stan z rejestru FPSCR.
_statusfp jest niezależną od platformy, przenośną wersją _status87.Jest ona identyczna z _status87 na platformach firmy Intel (x 86) i jest również obsługiwana przez platformy ARM i x 64.Aby mieć pewność, że kod zmiennoprzecinkowy jest przenośny do wszystkich architektur, _statusfp.Jeśli masz na celu tylko platformy x86, można użyć _status87 lub _statusfp.
Zaleca się _statusfp2 na czipy (na przykład Pentium IV), które mają procesor zmiennoprzecinkowy zarówno x87, jak i z SSE2.W przypadku _statusfp2, adresy są wypełnione przy użyciu słowa stanu zmiennoprzecinkowego dla obu procesorów zmiennoprzecinkowych, x87 lub SSE2.W przypadku chipa, który obsługuje procesory zmiennoprzecinkowe x87 i SSE2, obiekt EM_AMBIGUOUS jest ustawiony na 1, gdy _statusfp lub _controlfp jest używany i czynność była niejednoznaczna, ponieważ mogła się odwołać do słowa stanu zmiennoprzecinkowego x87 lub SSE2._statusfp2 funkcja jest obsługiwana tylko na platformach x86.
Funkcje te nie są przydatne dla /clr (Kompilacja środowiska uruchomieniowego języka wspólnego) lub /clr:pure kompilacji ponieważ common language runtime (CLR) obsługuje tylko Domyślna precyzja zmiennoprzecinkowych.
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_status87, _statusfp, _statusfp2 |
<float.h> |
Dodatkowe informacje o zgodności – zobacz: Zgodność.
Przykład
// crt_statusfp.c
// Build by using: cl /W4 /Ox /nologo crt_statusfp.c
// This program creates various floating-point errors and
// then uses _statusfp to display messages that indicate these problems.
#include <stdio.h>
#include <float.h>
#pragma fenv_access(on)
double test( void )
{
double a = 1e-40;
float b;
double c;
printf("Status = 0x%.8x - clear\n", _statusfp());
// Assignment into b is inexact & underflows:
b = (float)(a + 1e-40);
printf("Status = 0x%.8x - inexact, underflow\n", _statusfp());
// c is denormal:
c = b / 2.0;
printf("Status = 0x%.8x - inexact, underflow, denormal\n",
_statusfp());
// Clear floating point status:
_clearfp();
return c;
}
int main(void)
{
return (int)test();
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołań platformy.