"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك تحديد ما إذا كان مترجم C++ يتوافق مع معيار النقطة العائمة IEEE 754؟

كيف يمكنك تحديد ما إذا كان مترجم C++ يتوافق مع معيار النقطة العائمة IEEE 754؟

تم النشر بتاريخ 2024-11-19
تصفح:911

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

التحقق من معيار النقطة العائمة IEEE 754 في لغة C

تحديد ما إذا كان مترجم لغة C يلتزم بمعيار النقطة العائمة IEEE 754 يتم عادةً إنجازه من خلال تعريف المترجم. ومع ذلك، فإن التقنية المستخدمة في لغة C قد لا تنطبق مباشرة على لغة C.

C -Specific Approach

لحسن الحظ، توفر لغة C طريقة مباشرة لإنجاز هذا التحقق باستخدام الحدود الرقمية class:

std::numeric_limits::is_iec559;

يتم تقييم هذا التعبير إلى صحيح إذا تم استخدام IEEE 754 بواسطة المترجم وإلى خطأ بخلاف ذلك. يمكن إجراء فحص مماثل للنوع العائم:

std::numeric_limits::is_iec559;

الطريقة البديلة

كبديل لنهج الحدود الرقمية، يمكنك تكييف الجزء الثاني من استجابة آدم للغة C :

#include 

int main() {
  // Check for IEEE 754 compliance by checking for a finite number of float exponents.
  if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
    // Compiler uses IEEE 754.
  } else {
    // Compiler does not use IEEE 754.
  }
}

يعتمد هذا الأسلوب على حقيقة أن IEEE 754 يحدد نطاقًا محددًا من الأسس لأرقام الفاصلة العائمة. إذا كان الحد الأقصى للأس للمترجم يطابق الحد الأقصى لحجم عدد صحيح، فمن المرجح أن يلتزم بمعايير IEEE 754.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3