_clear87
, _clearfp
Obtém e limpa a palavra de status de ponto flutuante.
Sintaxe
unsigned int _clear87( void );
unsigned int _clearfp( void );
Valor retornado
Os bits no valor retornado indicam o status do ponto flutuante antes da chamada para _clear87
ou _clearfp
. Para obter uma definição completa dos bits retornados por _clear87
, consulte Float.h. Muitas das funções de biblioteca de matemática modificam a palavra de status 8087/80287, com resultados imprevisíveis. Valores de retorno de _clear87
e _status87
tornam-se mais confiáveis conforme menos operações de ponto flutuantes são executadas entre estados conhecidos da palavra de status de ponto flutuante.
Comentários
A função _clear87
limpa os sinalizadores de exceção na palavra de status de ponto flutuante, define o bit ocupado como 0 e retorna a palavra de status. A palavra de status de ponto flutuante é uma combinação da palavra de status 8087/80287 e outras condições detectadas pelo manipulador de exceção 8087/80287, como estouro e estouro negativo de pilha de ponto flutuante.
_clearfp
é uma versão portátil independente de plataforma da rotina _clear87
. É idêntico às _clear87
plataformas Intel (x86) e também é suportado pelas plataformas x64 e ARM. Para garantir que seu código de ponto flutuante seja portátil para x64 e ARM, use _clearfp
. Se você estiver segmentando apenas plataformas x86, poderá usar um ou _clear87
_clearfp
.
Essas funções estão preteridas ao compilar usando /clr (Compilação do Common Language Runtime), porque o Common Language Runtime dá suporte apenas à precisão de ponto flutuante padrão.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_clear87 |
<float.h> |
_clearfp |
<float.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
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() );
}
Status: 0000 - clear
Status: 0003 - inexact, underflow
Status: 80000 - denormal
Confira também
Suporte matemático e de ponto flutuante
_control87
, _controlfp
, __control87_2
_status87
, _statusfp
, _statusfp2