_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 _clearfp
l’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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour