Partager via


_clear87, _clearfp

Obtient et désactive le mot d'état à virgule flottante.

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

Valeur de retour

Les bits dans la valeur retournée indiquent l'état de la virgule flottante avant l'appel à _clear87 ou à _clearfp. Pour une définition complète des bits retournés par _clear87, consultez Float.h. De nombreuses fonctions de la bibliothèque mathématique modifient le mot d'état 8087/80287, avec des résultats imprévisibles. Les valeurs de retour de _clear87 et de _status87 sont plus fiables lorsque les opérations à virgule flottante sont effectuées entre les états connus du mot d'état à virgule flottante.

Notes

La fonction _clear87 désactive les indicateurs d'exception dans le mot d'état à virgule flottante, définit le bit occupé à 0, puis retourne le mot d'état. Le mot d'état à virgule flottante est une combinaison du mot d'état de 8087/80287 et d'autres conditions détectées par le gestionnaire d'exceptions 8087/80287, tel que le dépassement de capacité de la pile à virgule flottante par valeur supérieure et inférieure.

_clearfp est une version indépendante de la plateforme et portable de la routine _clear87. Elle est identique à _clear87 sur les plateformes Intel (x86) et est également prise en charge par les plateformes MIPS et ALPHA. Pour vous assurer que votre code à virgule flottante est portable à MIPS ou ALPHA, utilisez _clearfp. Si vous ciblez uniquement les plateformes x86, vous pouvez utiliser _clear87 ou _clearfp.

Ces fonctions sont ignorées lorsque vous utilisez /clr (Compilation pour le Common Language Runtime) ou /clr:pure pour compiler car le Common Langage Runtime (CLR) ne prend en charge que la précision de virgule flottante par défaut.

Configuration requise

Routine

En-tête requis

_clear87

<float.h>

_clearfp

<float.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

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

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Voir aussi

Référence

Prise en charge de la virgule flottante

_control87, _controlfp, __control87_2

_status87, _statusfp, _statusfp2