_status87, _statusfp, _statusfp2
Obtenha o flutuante aponte a palavra status.
unsigned int _status87( void );
unsigned int _statusfp( void );
void _statusfp2(unsigned int *px86, unsigned int *pSSE2)
Parâmetros
px86
Esse endereço é preenchido com a palavra de status para o 87 x unidade de ponto flutuante.pSSE2
Esse endereço é preenchido com a palavra de status para o SSE2, unidade de ponto flutuante.
Valor de retorno
Para _status87 e _statusfp, os bits no valor retornado indicam o status de ponto flutuante.Consulte o FLOAT.H incluem o arquivo para uma definição completa dos bits retornado por _status87.Muitas funções de biblioteca de matemática modificar a palavra status 8087/80287, com resultados imprevisíveis.Retornar valores do _clear87 e _status87 são mais confiáveis, se houver menos de operações de ponto flutuante entre estados conhecidos da palavra status de ponto flutuante._statusfp2não tem nenhum valor de retorno.
Comentários
O _status87 função obtém a palavra status de ponto flutuante.A palavra de status é uma combinação da palavra 80287/8087/80387 de status e outras condições detectadas pelo manipulador de exceção de 80287/8087/80387, como estouro de pilha de ponto flutuante positivo e negativo.Exceções não mascaradas são verificadas para antes de retornar o conteúdo da palavra status.Isso significa que o chamador é informado da pendentes exceções.
_statusfpé uma versão independente de plataforma, portátil do _status87.Ele é idêntico ao _status87 em plataformas Intel (x86) e também é compatível com a plataforma MIPS.Para garantir que seu código de ponto flutuante é portátil para MIPS, use _statusfp.Se você estiver direcionando apenas x86 plataformas, use um _status87 ou _statusfp.
_statusfp2é recomendado para chips (como, por exemplo, o Pentium IV e posterior) que possuem um 87 x e um SSE2 flutuante apontam o processador.Para _statusfp2, os endereços são preenchidos com a palavra de ponto flutuante de status para o 87 x ou do processador de ponto flutuante SSE2.Ao usar um chip que oferece suporte a x 87 e processadores de ponto flutuantes SSE2, EM_AMBIGUOUS é definida como 1 se _statusfp ou _controlfp é usado e a ação foi ambígua, pois ele poderia se referir a 87 x ou a palavra de status de ponto flutuante SSE2.
Essas funções são preteridas durante a compilação com /CLR (common Language Runtime Compilation) ou /clr:pure como o common language runtime oferece suporte apenas a precisão de ponto flutuante do padrão.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_status87, _statusfp, _statusfp2 |
<float.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Exemplo
// 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();
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.