Partager via


_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é.

Voir aussi

Référence

Support à virgule flottante

_clear87, _clearfp

_control87, _controlfp, __control87_2