ماذا يقول معيار 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؟ وكيف أكتب كودًا محمولًا إذا كانت الأحجام تختلف؟