السلام عليكم و رحمة الله و بركاته
سؤالي اليوم ربما يكون بدائيا ...! و لكنني و جدت بعض التعارض بين المترجمين borland c++ v 4.5 و dev c++ , لذلك أردت أن أطرح عليكم يبعض الأسئلة لكي تتضح لي المسألة.
الأسئلة تتعلق بتنفيذ الكود الآتي في المترجمين البورلاند و الديف:
#include<stdio.h>
int main()
{
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
printf("%d\n",sizeof(long double));
getchar();
return 0;
}بالنسبة للبولاند فقد كانت النتائج كالتالي:
حجم short يساوي 2 بايت
حجم int يساوي 2 بايت
حجم long يساوي 4 بايت
حجم float يساوي 4 بايت
حجم double يساوي 8 بايت
حجم long double يساوي 10 بايت
أما الديف فقد أظهر النتائج التالية:
حجم short يساوي 2 بايت
حجم int يساوي 4 بايت
حجم long يساوي 4 بايت
حجم float يساوي 4 بايت
حجم double يساوي 8 بايت
حجم long double يساوي 12 بايت
و مما جعلني أرتبك اختلاف المترجمين في حجم int و long double مما جعلني أشك في معلوماتي أصلا ...!
السؤال الآن هو:
1-ما هو حجم int و long double و هل يختلف باختلاف المترجم !؟ أم أنه من ثوابت اللغة !؟ و هل يختلف في لغتي السي و السي++ !؟
2-بافتراض أن حجم int يساوي 2 بايت و حجم float يساوي 4 بايت , ألا يمكننا الحصول على القيمة العظمى و الصغرى لـ float انطلاقا من int و ذلك بالضرب في 2 لأنه ضعف حجمه !؟
3-كيف يتساوى حجم float و حجم long مع أن قيمها العظمى و الصغرى تختلف ...!؟
بانتظار الرد و أشكركم مقدما.