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

هل تعمل جميع الدوال المتغيرة على ترقية الوسائط "العائمة" إلى "المزدوجة"؟

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

Do All Variadic Functions Promote `float` Arguments to `double`?

ترقية الوسيطة العائمة لمضاعفة الدوال المتغيرة

في مناقشة سابقة، لوحظ أن printf () يروج للوسيطة العائمة إلى مزدوج قبل قبوله. هذا يثير السؤال: هل جميع الدوال المتغيرة تؤدي هذا الترويج؟

ترويج الوسيطة المتغيرة

نعم، وفقًا لمعايير C99 وC، تم تمرير الوسيطات العائمة إلى المتغيرات المتغيرة تتم ترقية الوظائف إلى مضاعفة.

المواصفات القياسية

  • C99 (القسم 6.5.2.2): "الوسائط التي تحتوي على نوع تعويم هي تمت ترقيته إلى مزدوج. C (القسم 4.6)
  • : "يمكن تحويل القيمة الأولية من النوع float إلى قيمة أولية من النوع المزدوج. القيمة لم تتغير."
  • cppتفضيل على الدالة المتغيرة التحويلات
  • يوفر cppreference ملخصًا للتحويلات الافتراضية للوظائف المتغيرة في C :

std::nullptr_t to void*&&&]الوسائط العائمة لمضاعفة

الترويج الصحيح لـ bool و char و short و enumerations

    أصل الترويج
  • تم تقديم هذا الترويج في لغة C للتوافق مع معيار K&R C، على الرغم من عيوبه المحتملة. كما ينص الأساس المنطقي لـ C:
  • "من أجل التوافق مع الممارسة السابقة، تحدث جميع ترقيات الوسائط كما هو موضح في K&R في غياب إعلان النموذج الأولي، بما في ذلك الترويج غير المرغوب فيه دائمًا للتعويم إلى المضاعفة."
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3