long和int的區別

2021-07-09 10:31:19 字數 945 閱讀 5511

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型別通常字長是相同的)。

型別16位系統/位元組

32位系統/位元組

64位系統/位元組

char11

1char*24

8short22

2int24

4long44

8longlong88

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

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

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

3、long long是標準的8 bytes,不受編譯器限制,所以,16位的依然也是8 bytes。(多謝博友0_0i_i

的指正)

通過上面的介紹,應該大致明白整型的定義了吧,所以我們在使用整型變數的時候還是得小心的,尤其需要其所佔空間長度的時候,千萬不要想當然的認為int在32位系統下就是4個位元組。盡量使用sizeof取值。

long和int的區別

突然間就想到了 long 和int google 各種查詢,各種書籍 c primer c 程式語言 檢視,終於明白了一些。下面的話選自 c程式語言 short 與long兩個限定符的引入可以為我們提供滿足實際需要的不同長度的整形數。int通常代表特定機器中證書的自然長度。short型別通常為16位...

int 和 long 的區別

int 4個位元組,32位 unsigned int 0 4294967295 int 2147483648 2147483647 int32 4個位元組,32位 unsigned int32 0 4294967295 int32 2147483648 2147483647 long 4個位元組,3...

int 和 long的區別

資料模型決定了c語言中基本資料型別與資料寬度的對應關係。我們常用的32位模型稱為ilp32,而64位模型有三種 lp64 llp64和ilp64。在64位模型中,指標一定是64位的,但是int和long的寬度則在不同的資料型別中有不同的定義。如下表 datatype lp32 ilp32 llp64...