Condividi tramite


_clear87, _clearfp

Ottiene e cancella la parola di stato a virgola mobile.

unsigned int _clear87( void );
unsigned int _clearfp( void );

Valore restituito

I bit nel valore restituito indicano lo stato a virgola mobile prima della chiamata a _clear87 o a _clearfp. Per una definizione completa dei bit restituiti da _clear87, vedere Float.h. Molte funzioni della libreria matematica modificano la parola di stato 8087/80287, con risultati imprevisti. I valori restituiti da _clear87 e _status87 diventano più affidabili se vengono eseguite meno operazioni in virgola mobile tra gli stati noti della parola di stato a virgola mobile.

Note

La funzione _clear87 rimuove i flag di eccezione nella parola di stato a virgola mobile, imposta il bit impegnato a 0 e restituisce la parola di stato. La parola di stato a virgola mobile è una combinazione della parola di stato di 8087/80287 e di altre condizioni rilevate dal gestore eccezioni di 8087/80287, come ad esempio lo stack overflow ed underflow a virgola mobile.

_clearfp è una versione indipendente dalla piattaforma e portabile della routine _clear87. È identica a _clear87 su piattaforme Intel (x86) e viene supportata anche dalle piattaforme MIPS e ALPHA. Per assicurarsi che il codice a virgola mobile sia portabile in MIPS o ALPHA, utilizzare _clearfp. Se si intende utilizzare solo le piattaforme x86, è possibile utilizzare _clear87 o _clearfp.

Queste funzioni sono deprecate durante la compilazione con /clr (Compilazione Common Language Runtime) o /clr:pure poiché il common language runtime supporta solamente la precisione a virgola mobile predefinita.

Requisiti

Routine

Intestazione obbligatoria

_clear87

<float.h>

_clearfp

<float.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

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

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Supporto a virgola mobile

_control87, _controlfp, __control87_2

_status87, _statusfp, _statusfp2