32位系統和64位系統上資料型別的長度
轉載:http://blog.csdn.net/huyisu/article/details/17604983
int型字長問題:
① C/C++規定int字長和機器字長相同;
② 作業系統字長和機器字長未必一致;
③ 編譯器根據作業系統字長來定義int字長;
由上面三點可知,在一些沒有作業系統的嵌入式計算機系統上,int的長度與處理器字長一致;有操作
系統時,作業系統的字長與處理器的字長不一定一致,此時編譯器根據作業系統的字長來定義int字長:”
比如你在64位機器上執行DOS16系統,那麼所有for dos16的C/C++編譯器中int都是16位的;在64位機器上
執行win32系統,那麼所有for win32的C/C++編譯器中int都是32位的”
常見基本型別的位元組大小
32位作業系統
char :1個位元組(固定)
(即指標變數): 4個位元組(32位機的定址空間是4個位元組。同理64位編譯器)(變化)
short int : 2個位元組(固定)
int: 4個位元組(固定)
unsigned int : 4個位元組(固定)
float: 4個位元組(固定)
double: 8個位元組(固定)
long: 4個位元組
unsigned long: 4個位元組(變化*,其實就是定址控制元件的地址長度數值)
long long: 8個位元組(固定)
64位作業系統
char :1個位元組(固定)
*(即指標變數): 8個位元組
short int : 2個位元組(固定)
int: 4個位元組(固定)
unsigned int : 4個位元組(固定)
float: 4個位元組(固定)
double: 8個位元組(固定)
long: 8個位元組
unsigned long: 8個位元組(變化*其實就是定址控制元件的地址長度數值)
long long: 8個位元組(固定)
總結:除了*與long隨作業系統子長變化而變化外,其他的都固定不變(32位和64相比)
bool 1個位元組 char 1個位元組 int 4個位元組 float 4個位元組 doubl 8個位元組 long long 8個位元組