_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.
См. также
Ссылки
Поддержка чисел с плавающей запятой