C में चार इंटीजर टाइप्स हैं: short, int, long, long long। उनके आकार प्लेटफॉर्म-निर्भर हैं।
आकार संबंध (गारंटीड न्यूनतम)
sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long) ≥ 16 bits ≥ 16 bits ≥ 32 bits ≥ 64 bits
सामान्य आकार (बाइट्स में)
| प्लेटफॉर्म | short | int | long | long long | पॉइंटर |
|---|---|---|---|---|---|
| Windows 32-bit | 2 | 2 | 4 | 8 | 4 |
| Windows 64-bit | 2 | 4 | 4 | 8 | 8 |
| Linux 32-bit | 2 | 4 | 4 | 8 | 4 |
| Linux 64-bit (LP64) | 2 | 4 | 8 | 8 | 8 |
| Linux 64-bit (ILP64) | 4 | 8 | 8 | 8 | 8 |
उदाहरण: आकार प्रिंट करना
#include <stdio.h>
int main() {
printf("short: %zu\n", sizeof(short));
printf("int: %zu\n", sizeof(int));
printf("long: %zu\n", sizeof(long));
printf("long long: %zu\n", sizeof(long long));
printf("pointer: %zu\n", sizeof(void*));
return 0;
}
आउटपुट (लिनक्स 64-bit LP64)
short: 2 int: 4 long: 8 long long: 8 pointer: 8
क्रॉस-कंपाइलेशन और डेटा मॉडल्स
- ILP32: int, long, पॉइंटर = 32-बिट (विंडोज/लिनक्स 32-बिट)।
- LP64: long, पॉइंटर = 64-बिट, int = 32-बिट (लिनक्स/मैक 64-बिट)।
- LLP64: long long, पॉइंटर = 64-बिट, long = 32-बिट (विंडोज 64-बिट)।
पोर्टेबल कोड के लिए
<stdint.h>से फिक्स्ड-विड्थ टाइप्स उपयोग करें:int32_t,int64_t,uintptr_t।longपर भरोसा न करें जब सटीक आकार आवश्यक हो।