السلام عليكم ,,
كما تعودنا دائماً, سنحاول إلقاء الضوء على نقطة معينة في بحر ++C.
لنلق نظرة على الكود التالي :
cout << 1500;
كما ترون, سيتم طباعة 1500 على الشاشة, و لكن دعنا نتعمق قليلاً في تفاصيل اللغة!
إن جميع البيانات في ++C, لها أنواع معرفة من حيث الحجم و المعاملات التي يمكن أن تتم على ذلك النوع.
فالعدد 1500 في السطر السابق, يجب أن ينتمي لأحد الأنواع العددية في ++C,
لماذا ؟
لأنك بكل بساطة عندما تعرف أي دالة فأنت تذكر أنواع البيانات التي يمكن تمريرها للدالة ( توقيع الدالة ).
هل من الضروري إذاً أن أعرف العدد 1500 في متغير أو ثابت حتى يعمل الكود السابق ؟
الإجابة بكل بساطة, لا.
هنا يأتي دور المترجم, الذي يقوم بتلك العملية تلقائياً, في حالة الأعداد الصحيحة, سيتم التحويل إلى النوع int,
ثم يتم تمرير القيمة ذات النوع, إلى الكائن cout.
إلى هنا أعتقد أن الكلام بسيط و عال العال :)
الآن لنأخذ مسألة بسيطة على هذا الموضوع و سأنتظر حلولكم ,
ألقوا نظرة على الكود التالي :
#include <iostream>
void printX( unsigned int x ){
std::cout << x;
return;
}
void printX( int x ){
std::cout << x;
return;
}
int main(){
printX( 5 );
return 0;
}تم إعادة تعريف الدالة printX مرة مع النوع int و مرة مع unsigned int ,
الأسئلة ستكون كالتالي :
أي الدالتين سيتم تنفيذها, و لماذا ؟
و إذا اردنا إجبار المترجم على استخدام الدالة الأخرى, ما الذي يجب إضافته ؟
السؤال الأول بسيط جداً, و حله من مقدمة الموضوع,
أما السؤال الثاني فهو المشكلة :D
تحياتي ,,


