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