_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 では戻り値のビットは浮動小数点状態を示します。_status87 によって返されるビットの定義についてはFLOAT.H がファイルを含む " を参照してください。多くのライブラリ関数では予測できない結果を含む 8087/80287 のステータスという語を修飾します。ほとんどの浮動小数点演算が浮動小数点ステータス Word の既知の状態の間で呼び出された場合 _clear87 からの戻り値と _status87 は信頼性も高まります。_statusfp2 は戻り値がありません。
解説
_status87 の浮動小数点関数はステータス テキストを取得します。ステータスは浮動小数点スタック オーバーフローおよびアンダーフローのような 8087/80287/80387 の例外ハンドラーを確認します 8087/80287/80387 ステータスの単語や他の条件の組み合わせです。暴露される例外はステータス Word コンテンツがを返す前にチェックされます。これは呼び出し元が保留中の例外通知されることを意味します。
_statusfp はプラットフォームに依存しない_status87 に移植性の高いバージョンです。これはIntel (x86) プラットフォームで _status87 と同様にMIPS のプラットフォームでサポートされます。浮動小数点コードを MIPS に移植ことを確認するには_statusfp を使用します。対象 x86 プラットフォームであるか _status87_statusfp を使用します。
_statusfp2 は x87 と SSE2 浮動小数点のプロセッサの両方を持つチップに推奨されます (Pentium IV など以降)。_statusfp2 に住所x87 と SSE2 浮動小数点プロセッサ両方の浮動小数点ステータス テキストが格納されます。_statusfp または _controlfp を使用するとx87 と SSE2 浮動小数点のプロセッサをサポートするチップを使用するとEM_AMBIGUOUS が 1 に設定されたアクションは x87 と SSE2 浮動小数点のステータス単語を表示できるためあいまいです。
共通言語ランタイムは浮動小数点の既定の精度のみをサポートするので、/clr (共通言語ランタイムのコンパイル) または /clr:pure を使用してコンパイルする場合、これらの関数は使用しないでください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_status87, _statusfp, _statusfp2 |
<float.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。