Sdílet prostřednictvím


_status87, _statusfp, _statusfp2

Získá stavové slovo s plovoucí desetinnou čárkou.

unsigned int _status87( void );
unsigned int _statusfp( void );
void _statusfp2(unsigned int *px86, unsigned int *pSSE2)

Parametry

  • px86
    Tato adresa je vyplněna stavovým slovem pro jednotku s plovoucí desetinnou čárkou x87.

  • pSSE2
    Tato adresa je vyplněna stavovým slovem pro jednotku s plovoucí desetinnou čárkou SSE2.

Vrácená hodnota

Pro _status87 a _statusfp bity ve vrácené hodnotě označují stav ovládacího prvku s plovoucí desetinnou čárkou.V souboru include FLOAT.H naleznete definici bitů, které jsou vráceny pomocí funkcí _statusfp.Mnoho matematických knihovních funkcí upravuje stavové slovo s plovoucí desetinnou čárkou s nepředvídatelnými výsledky.Optimalizace pořadí, kombinovat a eliminovat tyto operace kolem volání _status87, _statusfpa související funkce.Použití /Od (Zakázat (ladění)) možnost kompilátoru nebo fenv_access směrnice pragma zabránit optimalizací, které pořadí operace s plovoucí desetinnou čárkou.Návratové hodnoty z _clearfp a _statusfpa také návrat parametry _statusfp2, jsou spolehlivější, méně tyto operace jsou prováděny mezi státy známé slovo stav s plovoucí desetinnou čárkou.

Poznámky

Funkce _statusfp získává stavové slovo s plovoucí desetinnou čárkou.Stavové slovo je kombinací stav procesoru s plovoucí desetinnou čárkou a dalších podmínek zjištěných obslužnou rutinou výjimky s plovoucí desetinnou čárkou, například přetečení a podtečení zásobníku s plovoucí desetinnou čárkou.Nemaskované výjimky jsou kontrolovány před vrácením obsahu stavového slova.To znamená, že volající je informován o čekajících výjimkách.Na platformách x86 platformách _statusfp vrací kombinaci stavů s plovoucí desetinnou čárkou x87 a SSE2.Na platformách x64 stav, který je vrácen, je založen na stavu MXCSR SSE.Na platformách ARM _statusfp vrátí stav z registru FPSCR.

_statusfp je na platformě nezávislá, přenosná verze _status87.Je shodné s _status87 na platformách Intel (x86) a je také podporováno platformami x64 a ARM.Chcete-li zajistit, že váš kód s plovoucí desetinnou čárkou je přenosný na všechny architektury, použijte _statusfp.Pokud cílíte pouze platformy x86, můžete použít buď _status87 nebo _statusfp.

Doporučujeme _statusfp2 pro čipy (například Pentium IV), které mají procesor s plovoucí desetinnou čárkou x87 i SSE2.Pro _statusfp2 jsou adresy vyplněny pomocí stavového slova s plovoucí desetinnou čárkou pro procesor s plovoucí desetinnou čárkou x87 nebo SSE2.Pro čip, který podporuje procesory s plovoucí desetinnou čárkou x87 a SSE2 je EM_AMBIGUOUS nastavena na 1, pokud se používá _statusfp nebo _controlfp a akce byla nejednoznačná, protože by mohla odkazovat na stavové slovo stav s plovoucí desetinnou čárkou x87 nebo SSE2.Funkce _statusfp2 je podporována pouze na platformách x86.

Tyto funkce jsou užitečné pro ne /clr (Common Language Runtime) nebo /clr:pure kompilace protože společný jazykový modul runtime (CLR) podporuje pouze výchozí přesnost s plovoucí desetinnou čárkou.

Požadavky

Rutina

Požadované záhlaví

_status87, _statusfp, _statusfp2

<float.h>

Další informace o kompatibilitě naleznete v tématu Kompatibilita.

Příklad

// 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();
}
  

Ekvivalent v rozhraní .NET Framework

Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.

Viz také

Referenční dokumentace

Podpora plovoucí desetinné čárky

_clear87, _clearfp

_control87, _controlfp, __control87_2