هل ضمان الحصول على 32 بت لفترة طويلة؟
على الرغم من الافتراضات الشائعة المستندة إلى معيار C، فإن السؤال الذي يطرح نفسه هو ما إذا كان ضمان الحصول على فترة طويلة مضمونًا 32 بت على الأقل. يصنف المعيار الأنواع الأساسية للتكامل على النحو التالي:
sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)
ومع ذلك، يفترض الكثيرون أنه بناءً على هذا التسلسل الهرمي، يجب أن يكون طويل 32 بت. ومع ذلك، ينص المعيار صراحة على أن عدد البتات في البايت يتم تحديده من خلال التنفيذ.
مطالبة ألف ب. أكد شتاينباخ أن المدة الطويلة مضمونة لتكون 32 بت. لقد استند في هذا الادعاء إلى الحد الضمني لنطاق القيم التي يمكن أن يحتفظ بها المدى الطويل (LONG_MIN إلى LONG_MAX).
يشير معيار C إلى معيار C (18.3.2)، الذي يحدد:LONG_MIN ≥ -2^31 1 LONG_MAX ≥ 2^31 - 1LONG_MIN ≤ -2^31 1 LONG_MAX ≥ 2^31 - 1
على الرغم من أن هذا ينشئ نطاقًا لفترة طويلة، إلا أنه لا يضمن صراحةً 32 بت. ومع ذلك، هناك احتمالان:
التمثيل الثنائي المكمل:
على الرغم من أن معيار C لا يتطلب صراحةً أن يكون طوله 32 بت، إلا أن الحد الأدنى لمتطلبات النطاق (LONG_MIN إلى LONG_MAX) يستلزم ذلك ضمنيًا. وذلك لأن تمثيل هذه القيم يتطلب إما 32 بت من التخزين أو آلية خاصة بالتنفيذ بسعة قيمة مكافئة. لذلك، يمكن أن نستنتج أن لغة C تضمن أن تحتوي على 32 بت على الأقل.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3