Avatar ·

ماذا يقول معيار C++ عن حجم أنواع int و long و long long؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم C++ وواجهت بعض الارتباك. أعلم أن أحجام الأنواع الصحيحة قد تختلف بين المترجمات والمنصات المختلفة. كتبت كودًا بسيطًا للتحقق من ذلك على جهازي (Windows، MinGW): ```cpp #include using namespace std; int main() { cout << "Size of int: " << sizeof(int) << " bytes" << endl; cout << "Size of long: " << sizeof(long) << " bytes" << endl; cout << "Size of long long: " << sizeof(long long) << " bytes" << endl; return 0; } ``` على جهازي حصلت على: int = 4 بايت، long = 4 بايت، long long = 8 بايت. لكنني قرأت على الإنترنت أن long على Linux x86_64 قد يكون 8 بايت. قال صديقي إنه على الأنظمة القديمة ذات 16 بت كان int بحجم 2 بايت. ما يهمني: ما الذي يضمنه معيار C++ فعليًا؟ هل يمكنني الاعتماد على أن int سيكون دائمًا 4 بايت؟ لماذا long و int متساويان على Windows ولكن مختلفان على Linux؟ وكيف أكتب كودًا محمولًا إذا كانت الأحجام تختلف؟