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