共用方式為


_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,在值中的位元傳回指出浮點狀態。請參閱浮點數。H 包含完整的定義,所傳回的位元的檔案_status87。許多的數學程式庫函式修改 8087/80287 狀態的字,預期的結果。傳回值,從_clear87和_status87是更可靠,如果已知狀態的浮點數的狀態文字之間執行較少的浮點數運算。_statusfp2有沒有傳回值。

備註

_status87函式會取得這個狀態的浮點數字。狀態文字是 8087/80287/80387 狀態文字及其他條件,偵測到 8087/80287/80387 例外處理常式,例如浮點堆疊溢位和反向溢位的組合。遮罩的例外狀況會檢查有傳回的狀態文字內容之前。這表示呼叫端的通知暫止的例外狀況。

_statusfp平台無關、 可移植版本的_status87。它是等於_status87在 Intel (x86) 平台上,也支援 MIPS 平台。若要確保您浮點數的程式碼可攜至 MIPS,請使用_statusfp。如果您只針對 x86 平台,可以使用任何一種_status87或_statusfp。

_statusfp2建議 (例如 Pentium IV 及更新版本) 的晶片,具有 x87 和 SSE2 浮點指處理器。對於_statusfp2,位址填入同時 x87 或 SSE2 浮點處理器的浮點狀態文字。當使用支援 x87 和 SSE2 浮點點處理器晶片,EM_AMBIGUOUS 被設定為 1,否則_statusfp或_controlfp用而且動作是模稜兩可,因為它無法參考 x87 或 SSE2 浮點狀態文字。

這些函式會被取代,以編譯時/clr (Common Language Runtime 編譯)或/clr:pure因為 common language runtime 只支援預設的浮點精確度。

需求

常式

所需的標頭

_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