_status87, _statusfp, _statusfp2
Получение машинное слово состояния с плавающей запятой.
unsigned int _status87( void );
unsigned int _statusfp( void );
void _statusfp2(unsigned int *px86, unsigned int *pSSE2)
Параметры
px86
Этот адрес заполняется с машинным словом состояния для единицы измерения с плавающей запятой x87.pSSE2
Этот адрес заполняется с машинным словом состояния для единицы измерения с плавающей запятой SSE2.
Возвращаемое значение
Для _status87 и _statusfpбиты в возвращаемом значении, указывающие состояние с плавающей запятой.См. файл FLOAT.H включает полный определения бит, возвращаемых by _status87.Многие функции библиотеки машинное слово 8087/80287 math изменяют состояния, что приводит к получению непредсказуемых результатов.Возвращаемые значения _clear87 и _status87 более надежны, если меньше операций с плавающей запятой выполняются между известными состояниями машинного слова состояния с плавающей запятой._statusfp2 не имеет возвращаемого значения.
Заметки
_status87 функция возвращает машинное слово состояния с плавающей запятой.Машинное слово состояния сочетание машинное слово состояния 8087/80287/80387 и другие условия 8087/80287/80387 обнаружены обработчиком исключений, например переполнение стека и потеря точности с плавающей запятой.Демаскированные исключения проверку перед возвращением содержимое машинного слова состояния.Это означает, что вызывающий объект информирован ожидающих исключений.
_statusfp независимая от платформы, портативная версия _status87.Она идентична _status87 на платформах Intel (x86), а также поддерживает платформой MIPS.Чтобы убедиться, что код с плавающей запятой, используйте можно переносить в MIPS _statusfp.Если предназначен только платформа x86, используйте то _status87 OR _statusfp.
_statusfp2 рекомендуется для chips (например, Пентиум IV и более поздние версии), которые имеют x87 и процессора с плавающей запятой SSE2.Для _statusfp2, адреса заполняются с машинным словом состояния с плавающей запятой, как для x87, так и для процессора с плавающей запятой SSE2.При использовании обломока, который поддерживает процессоры с плавающей запятой x87 и SSE2, EM_AMBIGUOUS имеет значение 1, если _statusfp OR _controlfp использует и действия является неоднозначной, поскольку она может ссылаться на x87 или машинном слову состояния с плавающей запятой SSE2.
Эти функции нерекомендуемый при компилировании с /clr (компиляция CLR) OR /clr:pure поскольку среда CLR поддерживает только по умолчанию точности с плавающей запятой.
Требования
Процедура |
Обязательный заголовок |
---|---|
_status87, _statusfp, _statusfp2 |
<float.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
Пример
// 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();
}
Эквивалент в .NET Framework
Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.