Поделиться через


_clear87, _clearfp

Возвращает и удаляет машинное слово состояния с плавающей запятой.

unsigned int _clear87( void );
unsigned int _clearfp( void );

Возвращаемое значение

Биты в возвращаемом значении отображают состояние с плавающей запятой перед вызовом _clear87 OR _clearfp.Для полного определения бит, возвращенных by _clear87см. в разделе Float.h.Многие из функций библиотеки машинное слово 8087/80287 math изменяют состояния, что приводит к получению непредсказуемых результатов.Возвращаемые значения _clear87 и _status87 о более надежны, как меньшее число операций с плавающей запятой выполняются между известными состояниями машинного слова состояния с плавающей запятой.

Заметки

_clear87 функция очищает флаги исключения в машинном слове состояния с плавающей запятой, устанавливает бит занятости до 0, и возвращает машинное слово состояния.Машинное слово состояния с плавающей запятой сочетание машинное слово состояния 8087/80287 и другие условия 8087/80287 обнаружены обработчиком исключений, например переполнение стека и потеря точности с плавающей запятой.

_clearfp независимая от платформы, портативная версия _clear87 подпрограмма.Она идентична _clear87 на платформах Intel (x86), а также поддерживается платформами MIPS и АЛЬФЫ-ВЕРСИИ.Чтобы убедиться, что код с плавающей запятой можно переносить в MIPS или АЛЬФЕ-ВЕРСИИ, используйте _clearfp.Если предназначен только платформа x86, то можно использовать одно _clear87 OR _clearfp.

Эти функции нерекомендуемый при компилировании с /clr (компиляция CLR) OR /clr:pure поскольку среда CLR поддерживает только по умолчанию точности с плавающей запятой.

Требования

Процедура

Обязательный заголовок

_clear87

<float.h>

_clearfp

<float.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

// 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() );
}
  

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Поддержка чисел с плавающей запятой

_control87, _controlfp, __control87_2

_status87, _statusfp, _statusfp2