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個位元組
32 64位作業系統,資料型別位元組數對比
常用資料型別對應位元組數 可用如sizeof char sizeof char 等得出 32位編譯器 char 1個位元組 char 即指標變數 4個位元組 32位的定址空間是2 32,即32個bit,也就是4個位元組。同理64位編譯器 short int 2個位元組 int 4個位元組 unsig...
32位64位作業系統基本資料型別位元組大小
int型字長問題 c c 規定int字長和機器字長相同 作業系統字長和機器字長未必一致 編譯器根據作業系統字長來定義int字長 由上面三點可知,在一些沒有作業系統的嵌入式計算機系統上,int的長度與處理器字長一致 有操作 系統時,作業系統的字長與處理器的字長不一定一致,此時編譯器根據作業系統的字長來...
32位64位作業系統基本資料型別位元組大小
int型字長問題 c c 規定int字長和機器字長相同 作業系統字長和機器字長未必一致 編譯器根據作業系統字長來定義int字長 由上面三點可知,在一些沒有作業系統的嵌入式計算機系統上,int的長度與處理器字長一致 有操作 系統時,作業系統的字長與處理器的字長不一定一致,此時編譯器根據作業系統的字長來...