1. 程式人生 > >各種資料型別佔位元組數

各種資料型別佔位元組數

int的位元組長度是由CPU和作業系統編譯器共同決定的,一般情況下,主要是由作業系統決定,比如,你在64位AMD的機器上安裝的是32位作業系統,那麼,int預設是32位的;如果是64位作業系統,64位作業系統分為兩種,1種是int為32位long為64位,2種int long均為64位。之所以說int同時也與編譯器有關,編譯器完全可以在32位系統模擬64位整數,例如Unix/Linux下的long long和Windows下的__int64均為64位整數。

---------------------------------------------------------------------

16位機器是2個位元組,32位機器下面是4個位元組

這個作業系統的位數有關,一個int的大小是作業系統的一個字長,TC是16位系統程式,所以int是16bit業就是兩個位元組 ,在32位linux和32位Windows下,都是4個位元組,也就是目前最常用的VC和gcc結果。

---------------------------------

gcc中的int和long型別長度都為4位元組

(1)int型別的長度有什麼決定?? 
……準確的位元組數依賴於機器和編譯器…… 
現階段32bit(即4位元組)PC一般在絕大多數編譯器下是32bit,當然也有的編譯器是16bit(比如turbo C)。最關鍵一點,只能小,不能大,這是因為即使編譯器把它當作大於32bit了,但因為CPU字長只有32bit,所以也只能處理32bit的數。 
同時需要注意的就是 在c標準中只是對不同的資料型別的數字範圍設定了下界,但是沒有上界。 

         (2)指標的型別是由什麼決定的呢?

 
sizeof(Type *)=?? 
================== 
指標的大小是由記憶體定址空間決定的,即地址匯流排決定。 

一般32位機定址空間4G,所以指標佔4位元組; 

一般8位的微控制器定址空間是64k,所以指標佔2位元組