int 和 long 在不同系统下所占字节大小
win32 | win64 | linux32 | linux64 | |
---|---|---|---|---|
int (Byte) | 4 | 4 | 4 | 4 |
long (Byte) | 4 | 4 | 4 | 8 |
归根到底是跟机器平台有关,因为是编译器去适应平台
数据模型(I:int、L:long、P:pointer、LL:long long;数字表示平台位数)
TYPE | LP32 | ILP32 | LP64 | ILP64 | LLP64 |
---|---|---|---|---|---|
CHAR | 8 | 8 | 8 | 8 | 8 |
SHORT | 16 | 16 | 16 | 16 | 16 |
INT | 16 | 32 | 32 | 64 | 32 |
LONG | 32 | 32 | 64 | 64 | 32 |
LONG LONG | 64 | 64 | 64 | 64 | 64 |
POINTER | 32 | 32 | 64 | 64 | 64 |
采用 | win16 | win32/Unix32类 | Unix64类 | win64 |
标题中位于前面的类型与中间位数保持一致(LP32:L32,P32)
通常情况下:
TYPE | CHAR | SHORT | INT | LONG | LONG LONG | POINTER |
---|---|---|---|---|---|---|
32 | 8 | 16 | 16 | 32 | 64 | 32 |
64 | 8 | 16 | 32 | 32 | 64 | 64 |
• 所有模型char8、short16、float32、double64、
• 现如今所有64bit类Unix平台均使用LP64数据模型,64bit
Windows使用LLP64数据模型