C での IEEE 754 浮動小数点標準のチェック
C コンパイラが IEEE 754 浮動小数点標準に準拠しているかどうかの判断は、通常、次のように行われます。コンパイラ定義。ただし、C に使用される手法は C に直接適用できない場合があります。
C 固有のアプローチ
幸いなことに、C では、numeric_limits を使用してこのチェックを実行する簡単な方法が提供されています。 class:
<code class="cpp">std::numeric_limits<double>::is_iec559;</code>
この式は、コンパイラで IEEE 754 が使用されている場合は true と評価され、それ以外の場合は false と評価されます。 float 型に対しても同様のチェックを実行できます。
<code class="cpp">std::numeric_limits<float>::is_iec559;</code>
代替メソッド
numeric_limits アプローチの代替として、Adam の 2 番目の部分を適応させることができます。 C の応答:
<code class="cpp">#include <limits> int main() { // Check for IEEE 754 compliance by checking for a finite number of float exponents. if (std::numeric_limits<float>::max_exponent == std::numeric_limits<int>::max()) { // Compiler uses IEEE 754. } else { // Compiler does not use IEEE 754. } }</code>
このアプローチは、IEEE 754 が浮動小数点数の指数の特定の範囲を定義しているという事実に依存しています。コンパイラの最大指数が整数の最大サイズと一致する場合、それは IEEE 754 に準拠している可能性があります。
以上がC コンパイラが IEEE 754 浮動小数点標準に準拠しているかどうかをどのように判断しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。