物聯網/嵌入式工程師
重磅升級:新增硬件電路設計與實戰,讓你軟硬通吃,同級PK無敵!行業風口、政策傾斜,新晉熱門高薪不內卷!0基礎一站式就業完整路徑,搶占先發優勢!
前面的課程中,我們用到了一種數據類型 int。其實 C++ 中還有很多別的數據類型,這些數據類型就像是不同型號的容器,這些容器有的大小不同,有的用途不同。
首先,我們可以將數據類型分為兩個大類,那就是整型和浮點型
他們就像裝紅酒的橡木桶和裝水的水缸,用途完全不同,當然你也可以混用他們,如果你不怕串味的話。在 C++ 中,大部分情況下,你最好區別對待,不要混用,因為真的會串味。
諜戰片中,里面的間諜會通過發電報來傳遞消息,在發電報的時候,總是會發出滴滴滴的長短不一的聲音,他們就是把要說的話轉譯成這樣長短不一的滴滴聲,然后接收者收到這些滴滴聲后,再通過查詢密碼表,把內容還原出來。
而在計算機中,存儲數據的方式就很像電報。其實計算機中,只能存放 0 和 1 兩種不同的信號,這也就是我們通常說的,計算機是二進制的。那么如何存放更復雜的數據呢?答案是排列組合。
在計算機中,存在這樣的一個存儲單元,一個存儲單元可以存放 0 或者 1 兩種狀態,那么他就能存放兩個數字。我們管這樣一個存儲單元叫做 1bit,中文叫做 1 位。
那么如果我們將 2 個 bit 組合起來,通過排列組合,我們就可以得到 2 的 2 次方,也就是 4 個數字的數據容量。
那么如果我們將 8 個 bit 組合起來,通過排列組合,我們就可以得到 2 的 8 次方,也就是 256 個數字的數據容量。在計算機中,我們把 8 個 bit 的容量稱之為 1 個 byte, 中文叫做字節。8bit = 1 byte
整型又可以分為有符號和無符號兩個大類,這里的符號,指的其實就是正負號,有符號的數據類型,可以用來存放正數和負數,而無符號的數據類型,只能用來存放正數。
有符號的數據類型
無符號的數據類型
通過觀察,我們可以發現,有符號和無符號的數據容量其實是相同的,拿 char 和 unsigned char 來說,他們的容量都是 2 的 8 次方,也就是 256 個數。只不過 char 類型的范圍是 [-128, 127],而 unsigned char 類型的范圍是 [0, 255]。
每種數據類型最大的差別就是他們所占的空間大小不一樣,更大的數據類型擁有更大的容量,這也意味著他能裝得下更多的數字,或者更多的精度。
其實上面的表中的數據長度,只是一個常見的默認值,不同的機器會有不同的情況,C++ 標準中并沒有定義某一個數據類型必須占用多少個字節的長度,C++只定義了每種數據類型長度的一個范圍。
?那么如何查看每種數據類型在電腦上占用的長度呢?試試下面的代碼
#include <stdio.h>
int main(int argc,char **argv)
{
printf("int: %d\n", sizeof(int));
return 0;
}
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報