一直有個疑問,我的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位的。