_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。 如需詳細資訊,請參閱平台叫用範例。