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

См. также

Ссылки

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

_clear87, _clearfp

_control87, _controlfp, __control87_2