1. 整型數據類型

在上一節當中,我們遇到瞭用int(整數integer的縮寫)來表示一個整數的數據類型。

這一節中,我們來詳細討論一下C語言裡面的整數數據類型。

在C語言中,有上面表中列出的幾種整型數據類型。

看到這裡你可能想問,一個整數而已,為什麼會需要定義這麼多不同的類型出來呢?

計算機通過晶體管的開關狀態來記錄數據。它們通常8個編為一組,我們稱之為字節。而晶體管有開關兩種狀態,一個字節有8個晶體管,因此一個字節可以擁有2的八次方個不同的狀態。讓每一種狀態對應一個數值,這樣一個字節可以表示256個不同數值。

要表示更大的數據范圍就需要更多晶體管。要知道在發明C語言的年代,計算機存儲資源是非常珍貴而稀缺的。對存儲資源,程序員可能恨不得把一塊掰成兩塊來用。如果隻想表達0到100以內的數值,那麼一個字節就足夠瞭,何必用兩個字節來存儲呢?

而如今,即使存儲資源已經較為豐富瞭,但是大部分的強類型語言,都延續瞭這個傳統。它們均提供瞭豐富的類型以供選用。而程序員在編寫代碼時,通常能預想到需要使用到的數據范圍的大小。這樣在處理一個數據時,可以從語言所提供的類型中選用最合適的類型來承載數據。

那麼接下來,你可能想知道這些類型中,它們分別占用幾個字節,具體的數據范圍是多少?從而合適地選擇數據類型。很遺憾,我不能準確地告訴大傢。因為C語言標準並未規定這些數據類型的大小范圍,具體的實現交由瞭編譯器和平臺決定。那我們怎樣知道在visual studio 2019中,各種整型數據類型能夠表示的數據范圍呢?

我們需要sizeof關鍵詞來幫我們測量。

2. 用sizeof關鍵詞來測量大小

和int一樣,sizeof是C語言中的一個關鍵詞。它是英文size of連起來的合成詞。翻譯成中文就是什麼東西的大小的意思。它能夠測量C語言各種實體所占用的字節大小。

如果我們想看int所占用的字節大小,可以這樣寫sizeof(int)。執行後這段代碼後,它的測量結果是一個整型。我們可以借助printf函數將測量結果顯示在控制臺上。由於sizeof返回的結果是整型的,所以printf函數中的占位符應使用%d。(更準確地說,應該用%zd。 )

測量int類型所占用的字節大小,並將結果打印在控制臺上的代碼如下:

printf("%dn", sizeof(int));