Share via


_clear87, _clearfp

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

Syntaxe

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

Valeur retournée

Les bits contenus dans la valeur retournée indiquent l'état à virgule flottante avant l'appel à _clear87 ou _clearfp. Pour obtenir une définition complète des bits retournés par _clear87, consultez Float.h. Une part importante des fonctions de bibliothèque mathématique modifie le mot d'état 8087/80287, avec des résultats imprévisibles. La fiabilité des valeurs de retour de _clear87 et _status87 est inversement proportionnelle au nombre d'opérations à virgule flottante exécutées entre les états connus du mot d'état à virgule flottante.

Notes

La fonction _clear87 efface les indicateurs d'exception dans le mot d'état à virgule flottante, définit le bit occupé à 0 et retourne le mot d'état. Le mot d'état à virgule flottante est une combinaison du mot d'état 8087/80287 et d'autres conditions détectées par le gestionnaire d'exceptions 8087/80287, telles que le dépassement de capacité positif et négatif de pile à virgule flottante.

_clearfp est une version portable indépendante de la plateforme de le routine _clear87. Il est identique aux _clear87 plateformes Intel (x86) et est également pris en charge par les plateformes x64 et ARM. Pour assurer la portabilité de votre code à virgule flottante vers x64 et ARM, utilisez _clearfp. Si vous ciblez uniquement des plateformes x86, vous pouvez utiliser l’une ou _clearfpl’autre _clear87 .

Ces fonctions sont déconseillées lors de la compilation avec /clr (Compilation Common Language Runtime), car le Common Language Runtime prend uniquement en charge la précision à virgule flottante par défaut.

Spécifications

Routine En-tête requis
_clear87 <float.h>
_clearfp <float.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

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() );
}
Status: 0000 - clear
Status: 0003 - inexact, underflow
Status: 80000 - denormal

Voir aussi

Prise en charge mathématique et à virgule flottante
_control87, _controlfp, __control87_2
_status87, _statusfp, _statusfp2