次の方法で共有


_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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

浮動小数点サポート

_clear87、_clearfp

_control87、_controlfp、__control87_2