天天看點

c語言那個類型是16位,c語言基本資料類型

1,常用資料類型及所占大小

short、int、long、char、float、double 這六個關鍵字代表C 語言裡的六種基本資料類型。

在32 位的系統上short 記憶體大小是2 個byte;

int的記憶體大小是4 個byte;

long 的記憶體大小是4 個byte;

float 的記憶體大小是4 個byte;

double 的記憶體大小是8 個byte;

char 的記憶體大小是1 個byte。

(注意,可能不同的平台還會有所不同,具體平台可以用sizeof 關鍵字測試一下)

2,long 和 int 的差別?

下面的話選自《C程式設計語言》:

short與long兩個限定符的引入可以為我們提供滿足實際需要的不同長度的整形數。int通常代表特定機器中證書的自然長度。short類型通常為16位,long類型通常為32位,int類型可以為16位或32位。各編譯器可以根據硬體特性自主選擇合适的類型長度,但要遵循下列限制:short與int類型至少為16位,long類型至少為32位,并且short類型不得長于int類型,而int類型不得長于long類型。

下面一段話選自《C++ Primer》:

short、int和long類型都表示整型值,存儲空間的大小不同。一般,short類型為半個機器字長(word)長,int類型為一個機器字長,而long類型為一個或兩個機器字長(在32位機器中int類型和long類型通常字長是相同的)。

c語言那個類型是16位,c語言基本資料類型

從表中可以看出這麼幾個問題,int類型在64位系統下竟然是4個位元組32位的。還有,這些玩意兒到底跟什麼有關系?是誰在控制着?從網上扒了各種解釋,大概有這麼兩點:

1、64位系統下,編譯器為了向前相容,将int類型自動編譯為4個位元組的了;

2、這些個玩意兒就是編譯器來控制的,不同的編譯器将int類型編譯成不同長度的,是以,使用什麼編譯器才是重要的,比如:32位系統,tc下的int就是16位長度的,VC就是32位長度的。

3、long long是标準的8 bytes,不受編譯器限制,是以,16位的依然也是8 bytes。

參考文獻:http://blog.sina.com.cn/s/blog_6f62c9510101svjz.html