_status87, _statusfp, _statusfp2

Ottenere la parola di stato a virgola mobile.

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

Parametri

  • px86
    Questo indirizzo viene riempito di parola di stato per unità in virgola mobile x87.

  • pSSE2
    Questo indirizzo viene riempito di parola di stato per unità in virgola mobile SSE2.

Valore restituito

per _status87 e _statusfp, i bit nel valore restituito indica lo stato della virgola mobile.Vedere il file di inclusione di FLOAT.H per una definizione completa di bit restituiti da _status87.Molte funzioni della libreria matematiche modificano la parola di stato di 8087/80287, con risultati imprevisti.valori restituiti da _clear87 e _status87 essere più affidabile compilando meno operazioni a virgola mobile vengono eseguite tra gli stati noto della parola di stato a virgola mobile._statusfp2 non dispone di alcun valore restituito.

Note

_status87 la funzione ottiene la parola di stato a virgola mobile.La parola dello stato è una combinazione della parola di stato di 8087/80287/80387 e di altre condizioni rilevate dal gestore eccezioni di 8087/80287/80387, come overflow dello stack a virgola mobile e underflow.Le eccezioni smascherate sono rilevare eventuali prima di restituire il contenuto della parola di stato.Ciò significa che il chiamante sia consapevole delle eccezioni in corso.

_statusfp è un piattaforma-indipendente, versione portabile _status87.Equivale a _status87 su piattaforme Intel (x86) ed è anche supportato dalla piattaforma di MIPS.Per assicurarsi che il codice a virgola mobile è portabile a MIPS, utilizzare _statusfp.Se si intende utilizzare solo le piattaforme x86, utilizzare l'uno o l'altro _status87 o _statusfp.

_statusfp2 è consigliabile per le fiche quali i Pentium vettore di inizializzazione e successive) che dispongono sia di un x87 che un processore a virgola mobile SSE2.per _statusfp2, gli indirizzi sono riempiti di parola di stato a virgola mobile sia per il x87 o il processore a virgola mobile SSE2.Quando si utilizza un fiche che supporta i processori a virgola mobile x87 e SSE2, EM_AMBIGUOUS è impostato su 1 se _statusfp o _controlfp viene utilizzato e l'azione era ambigua poiché potrebbe fare riferimento a x87 o alla parola di stato a virgola mobile SSE2.

Queste funzioni sono deprecate durante la compilazione con /clr (Compilazione Common Language Runtime) o /clr:pure poiché Common Language Runtime supporta solo la precisione dei valori a virgola mobile predefinita.

Requisiti

routine

Intestazione di associazione

_status87, _statusfp, _statusfp2

<float.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

// crt_status87.c
// This program creates various floating-point errors and
// then uses _status87 to display messages indicating these problems.
// Compile this program with optimizations disabled (/Od). Otherwise,
// the optimizer removes the code related to 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",_status87() );

   // Assignment into y is inexact & underflows: 
   y = a;
   printf( "Status = %.4x - inexact, underflow\n", _status87() );

   // y is denormal: 
   b = y;
   printf( "Status = %.4x - inexact underflow, denormal\n", 
           _status87() );

   // Clear user 8087: 
   _clear87();
}
  

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.

Vedere anche

Riferimenti

Supporto per le operazioni in virgola mobile

_clear87, _clearfp

_control87, _controlfp, __control87_2