Bagaimanakah anda menentukan sama ada pengkompil C mematuhi piawaian titik terapung IEEE 754?

DDD
Lepaskan: 2024-10-28 21:06:02
asal
343 orang telah melayarinya

How do you determine if a C   compiler conforms to the IEEE 754 floating point standard?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan