Menyemak IEEE 754 Floating Point Standard dalam C
Menentukan sama ada pengkompil C mematuhi standard IEEE 754 floating point biasanya dicapai melalui definisi penyusun. Walau bagaimanapun, teknik yang digunakan untuk C mungkin tidak terpakai secara langsung kepada C .
C -Pendekatan Khusus
Nasib baik, C menawarkan kaedah yang mudah untuk menyelesaikan semakan ini menggunakan had_numerik kelas:
<code class="cpp">std::numeric_limits<double>::is_iec559;</code>
Ungkapan ini dinilai kepada benar jika IEEE 754 digunakan oleh pengkompil dan palsu sebaliknya. Semakan serupa boleh dilakukan untuk jenis apungan:
<code class="cpp">std::numeric_limits<float>::is_iec559;</code>
Kaedah Alternatif
Sebagai alternatif kepada pendekatan numeric_limits, anda boleh menyesuaikan bahagian kedua Adam's respons untuk 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>
Pendekatan ini bergantung pada fakta bahawa IEEE 754 mentakrifkan julat eksponen khusus untuk nombor titik terapung. Jika eksponen maksimum pengkompil sepadan dengan saiz maksimum integer, ia berkemungkinan mematuhi IEEE 754.
Atas ialah kandungan terperinci Bagaimanakah anda menentukan sama ada pengkompil C mematuhi piawaian titik terapung IEEE 754?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!