一直有个疑问,我的64位系统,为什么int=一个机器字长,sizeof(int)==4?原来和编译器的数据模型有关
一.c语言数据占用字节
32位:char 1 short 2 int 4 long 4 long long 8
64位:char 1 short 2 int 4 long 8 long long 8
二.原因 编译器的数据模型(一般情况下windows64位一般使用LLP64模型;64位Unix,Linux使用的是LP64模型)
Datetype LP64 ILP64 LLP64 ILP32 LP32
char 8 8 8 8 8
short 16 16 16 16 16
int 32 64 32 32 16
long 64 64 32 32 32
pointer 64 64 64 32 32
- 在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位平台上的字长模型。
- LP64意思是long和pointer是64位,
- ILP64指int,long,pointer是64位,
- LLP64指long long和pointer是64-bit的。
- ILP32指int,long和pointer是32位的,
- LP32指long和pointer是32位的。