コンパイラが IEEE 754 標準に準拠しているかどうかを確認するために特定の定義チェックが必要な C とは異なり、C ではより直接的なアプローチ。 C 標準には、std 名前空間内に numeric_limits クラスが含まれています。コンパイラが IEEE 754 を使用しているかどうかを判断するには、次のように静的メンバー is_iec559 にアクセスします。
<code class="cpp">std::numeric_limits<double>::is_iec559;</code>
または:
<code class="cpp">std::numeric_limits<float>::is_iec559;</code>
この式は、IEEE 754 が使用されている場合は true を返します。それ以外の場合は false。
あるいは、アダムの回答で示唆されているように、別の方法を採用することもできます。
<code class="cpp">#include <iostream> #include <cmath> int main() { double d = -0.0; std::cout << (std::signbit(d) != std::signbit(-d)) << std::endl; return 0; }</code>
コンパイラが IEEE 754 をサポートしている場合、このコードは 0 を出力します。それ以外の場合は、1 を出力します。
以上がC コンパイラが IEEE 754 標準に準拠しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。