_clear87, _clearfp
Obtém e desmarque as palavras de status de ponto flutuante.
unsigned int _clear87( void );
unsigned int _clearfp( void );
Valor de retorno
Os bits no valor retornado indica o status de ponto flutuante antes da chamada a _clear87 ou a _clearfp. Para uma definição completa de bits retornados por _clear87, consulte Float.h. Muitas das funções da biblioteca matemáticas alteram as palavras de status de 8087/80287, com resultados imprevisíveis. Os valores de retorno de _clear87 e _status87 se tornam mais confiáveis como menos operações de ponto flutuante são executadas entre estados conhecidos de palavras de status de ponto flutuante.
Comentários
A função de _clear87 limpa os sinalizadores de exceção no word de status de ponto flutuante, define o bit ocupado a 0, e retorna as palavras de status. As palavras de status de ponto flutuante são uma combinação de palavras de status de 8087/80287 e de outras condições detectadas pelo manipulador da exceção de 8087/80287, como o estouro da pilha de ponto flutuante e o estouro negativo.
_clearfp é uma versão independente, portátil da rotina de _clear87 . É idêntica a _clear87 em plataformas Intel (x86) e também tem suporte para plataformas de MIPS e de ALPHA. Para assegurar que seu código de ponto flutuante é portátil a MIPS ou ao ALPHA, use _clearfp. Se você está definido somente as plataformas x86 como destino, você pode usar _clear87 ou _clearfp.
Essas funções são substituídas durante a criação com /clr (compilação do Common Language Runtime) ou /clr:pure como Common Language Runtime oferece suporte apenas a precisão de ponto flutuante padrão.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_clear87 |
<float.h> |
_clearfp |
<float.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.
Exemplo
// 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() );
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.