_status87, _statusfp, _statusfp2
Obtenez le mot d'état à virgule flottante.
unsigned int _status87( void );
unsigned int _statusfp( void );
void _statusfp2(unsigned int *px86, unsigned int *pSSE2)
Paramètres
px86
cette adresse est remplie avec le mot d'état pour l'unité de la virgule flottante x87.pSSE2
cette adresse est remplie avec le mot d'état pour l'unité de la virgule flottante SSE2.
Valeur de retour
pour _status87 et _statusfp, les bits en valeur retournée indiquent l'état de la virgule flottante.Consultez le fichier Include de FLOAT.H pour une définition complète des bits retournés par _status87.De nombreuses fonctions de la bibliothèque mathématique modifient le mot d'état de 8087/80287, avec des résultats imprévisibles.Les valeurs de retour d' _clear87 et l' _status87 sont plus fiables si moins opérations en virgule flottante sont exécutées entre les états connus du mot d'état à virgule flottante._statusfp2 n'a aucune valeur de retour.
Notes
la fonction d' _status87 obtient le mot d'état à virgule flottante.Le mot d'état est une combinaison du mot d'état de 8087/80287/80387 et d'autres conditions détectés par le gestionnaire d'exceptions de 8087/80287/80387, tel que le dépassement de capacité de la pile à virgule flottante et le dépassement de capacité.Les exceptions démasquées sont examinées pour vérifier avant que le contenu du mot d'état.Cela signifie que l'appelant est informé des exceptions en attente.
_statusfp est une version plateforme-indépendante et portable d' _status87.Il est identique à _status87 sur les plateformes Intel (x86) et est également pris en charge par la plateforme de MIPS.Pour vous assurer que votre code à virgule flottante est portable à MIPS, utilisez _statusfp.Si vous ciblez uniquement les plateformes x86, utilisez _status87 ou _statusfp.
_statusfp2 est recommandé pour les processeurs (tels que Pentium vecteur d'initialisation et versions ultérieures) qui ont un x87 et un processeur de la virgule flottante SSE2.Pour _statusfp2, les adresses sont effectuées avec le mot d'état à virgule flottante pour le x87 ou processeur SSE2 à virgule flottante.À l'aide d'un processeur qui prend en charge des processeurs de la virgule flottante x87 et SSE2, EM_AMBIGUOUS a la valeur 1 si _statusfp ou _controlfp est utilisé et l'action était ambiguë car il pourrait faire référence au x87 ou au mot d'état à virgule flottante SSE2.
Ces fonctions sont déconseillées lors de la compilation avec /clr (Compilation pour le Common Language Runtime) ou /clr:pure car le common langage runtime prend en charge uniquement la précision de virgule flottante par défaut.
Configuration requise
routine |
en-tête requis |
---|---|
_status87, _statusfp, _statusfp2 |
<float.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// 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();
}
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.