關於Long long int, long int ,int 和short int的長度大小區分

一. 題外話

國內很多的計算機編程書籍對於基本語法講解的都不是很到位,最著名的爭論就是譚浩強老師的計算機C語言編程中的

void main()

{

//statement

}

這個語法在C 語言C90和C99兩個標準其實是都不承認的,但是部分編譯器允許通過,所以國內很多學生在書寫的時候也就形成這樣的習慣,殊不知它是真的不符合標準的,那按照標準如何寫,可以舉例子

例子1:

int main(void)

{

//statement

return 0;

}

/////////////////////////////////////////////////////////////////////////////////////此處應有分割線/////////////////////////////////////

例子2:

void main(void)

{

//statement

}

寫到這裡並不是說要去責備譚老師,譚老師開始在國內普及C的時候,還沒有一個規定的標準呢,所以我們應該感謝譚老師對中國C語言的貢獻,畢竟大家一直都覺得國內教材前十年沒有出其左右的書本了,不能吹毛其次啊。

二.正文

然後說會正題,關於int和他的變形的長度大小:

①long long或者long long int,它僅僅只為64位系統而生,所以它的長度只能是64bit;

②long或long int長度 long long的一半,32bit,不能是32到64之間的任何值,因為是二進位;

③short 或short int剛好又是long(long int)的一半,16bit

④int的長度沒有確定的規範,這和機器的字有關係,一般微機字長位16位或32位,如果使用的機器字長位32位,那麼程序中int就表示32位長,那麼64位字長機器上是否意味著int表示64位長呢?這個需要大神回復。

當我們理解這四種int數據類型後,我們再想起primer書上的一句話

「short int類型(或者簡寫short)可能佔用比int更少的存儲空間「

這就是上面說的到,int可能是32位,short自然會用到更少的空間,但是int也可能是16位的,那麼short int並不會比int帶來減少存儲空間的好處,我們不免看到老外大牛寫書的嚴謹啊,佩服佩服,經典就是經典。

接下來還需要說一點關於使用int和其他類型int的小技巧:

如果在某機器上,int和long int是等價的時候,我們堅持使用long int而不是int,雖然他們的數值範圍完全相同,為什麼呢?

因為在另一個字長16位的機器上時候,int表示16位,那麼使用int而不是long int的這個程序移植到該機器時候,程序會出錯的,損害了C的易移植性特點。

說了很多,都是初學者適合看看,對於計算機大牛,你們就別笑我啦。

----

吳孟傑 中國科學院西安光機所

Email:wumengjie@opt.cn


推薦閱讀:

【乾貨合集】看完這些乾貨,再說你因為「怕蛇」,所以學不好 Python!
Jupyter Notebook數據科學高效技巧

TAG:C編程語言 | 數據類型 |