C++中的整型
1、整型
整型即整數(shù),與小數(shù)對(duì)應(yīng)。
許多語言只能表示一種整型(如Python
),而在C++當(dāng)中根據(jù)整數(shù)的范圍提供了好幾種不同的整型。
C++
的基本整型有char
、short
、int
、long
,在C++ 11
標(biāo)準(zhǔn)中,新增了long long
。在部分編譯器當(dāng)中不支持long long
,而支持__int64
。稍后會(huì)有單獨(dú)的文章對(duì)此進(jìn)行解釋和補(bǔ)充說明。
其中char類型有一些特殊屬性,通常被用來當(dāng)做字符而非整數(shù)。另外,每一種類型都有有符號(hào)版本和無符號(hào)版本兩種,所以總共一共有10種類型。
2、short、int、long和long long
這四種類型都是整型,唯一的不同是范圍的區(qū)別。受到底層硬件的影響,C++當(dāng)中這四種類型的范圍并不是固定的。由于要兼容各種不同類型的系統(tǒng)與硬件,所以沒有辦法對(duì)類型進(jìn)行統(tǒng)一。
為了避免引起不便,C++提供了一種靈活的標(biāo)準(zhǔn),它確保了每一種類型的最小范圍。
short
至少16位int
至少與short
一樣長long
至少32位,且至少與int一樣長long long
至少64位,且至少與long
一樣長
3、位與字節(jié)
計(jì)算機(jī)內(nèi)存的基本單元是位,英文是bit
,音譯成比特。一位bit只有0和1兩個(gè)值,可以將其看成是開關(guān)。8位bit一共有256中不同的組合,即。因此8位bit可以表示0-255或者-128-127。
每增加一個(gè)二進(jìn)制位,可以表示的范圍翻倍。因此16位可以表示65536個(gè)值,而32位可以表示4294672296個(gè)值,64位更大,大約能表示。這個(gè)范圍足夠表示銀河系中所有的星星。
8位二進(jìn)制位是一個(gè)字節(jié)(byte),字節(jié)是計(jì)算機(jī)存儲(chǔ)的最小計(jì)量單位。1024個(gè)字節(jié)稱為1KB,而1024個(gè)KB又被稱為1MB,1024MB為1GB。
一般在操作系統(tǒng)當(dāng)中,都有最小長度,這通常是由CPU的位數(shù)所決定的。在常用的操作系統(tǒng)當(dāng)中如Linux
、Windows
、MacOS
,int和long為32位,short為16位,而long long
為64位。
除了根據(jù)通常情況來推測之外,C++當(dāng)中也提供了一些現(xiàn)成的工具來查看。比如sizeof函數(shù),sizeof函數(shù)可以查看變量占據(jù)的字節(jié)數(shù)。這個(gè)函數(shù)既可以接受變量類型也可以接受變量本身,如果傳入的是變量類型,那么計(jì)算的結(jié)果就是該類型的變量占據(jù)的內(nèi)存大小,同理如果是變量本身,則表示變量本身占據(jù)的內(nèi)存。
需要注意的是,當(dāng)我們查看對(duì)象是變量類型時(shí),需要使用括號(hào),如果是變量本身,則括號(hào)是可選的。
cout << sizeof(int) << endl; int a = 3; cout << sizeof a << endl;
上述兩個(gè)cout的輸出結(jié)果都是4。
除了sizeof
函數(shù)之外,C++還提供了大量的常量。比如INT_MAX
,LONG_MAX
等,顧名思義這些常量的值就是各個(gè)類型的最大值。C++ primer
當(dāng)中說這些常量存儲(chǔ)在頭文件climits
當(dāng)中,但我嘗試了一下,發(fā)現(xiàn)沒有引入這個(gè)頭文件也一樣能夠訪問,所以可能已經(jīng)成為內(nèi)置變量了。
有最大值,也一樣有最小值,如INT_MIN
,LONG_MIN
等。我個(gè)人感覺這塊使用頻率不高,就不過多贅述了,有需要去翻閱一下primer
即可。
4、初始化
我們之前在介紹變量的時(shí)候只是介紹了聲明變量的方式,類似于:
int a, b;
但其實(shí)我們可以把變量的聲明語句與賦值語句結(jié)合在一起,在聲明的同時(shí)進(jìn)行初始化。例如:
int a = 3; char c = 'c';
當(dāng)然這個(gè)只是最基礎(chǔ)的初始化方式,尤其是后續(xù)涉及到面向?qū)ο髸r(shí)還有更多的使用細(xì)節(jié)。
5、無符號(hào)類型
前文當(dāng)中在介紹位和字節(jié)的時(shí)候曾經(jīng)提到過,比如8位二進(jìn)制位既可以表示0-255也可以表示-128-127。這其實(shí)就是有符號(hào)和無符號(hào)的區(qū)別。
如果我們確定我們要存儲(chǔ)的整數(shù)為非負(fù)數(shù),并且想要擁有更大的范圍,就可以使用無符號(hào)修飾符unsigned
來修飾這幾種類型。
比如:
unsigned short ushort; unsigned int uint; unsigned long ulong; unsigned long long ull;
其中unsigned int
可以簡寫成unsigned
,其他的用法和有符號(hào)的整數(shù)是一樣的。
到此這篇關(guān)于C++中的整型的文章就介紹到這了,更多相關(guān)C++整型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
注:文章轉(zhuǎn)自微信公眾號(hào):Coder梁(ID:Coder_LT)
相關(guān)文章
詳細(xì)分析C++ 數(shù)據(jù)封裝和數(shù)據(jù)抽象
這篇文章主要介紹了C++ 數(shù)據(jù)封裝和數(shù)據(jù)抽象的的相關(guān)資料,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06C字符串操作函數(shù)實(shí)現(xiàn)方法小結(jié)
這篇文章主要介紹了C字符串操作函數(shù)實(shí)現(xiàn)方法,實(shí)例總結(jié)了C語言字符串操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04DHCP:解析開發(fā)板上動(dòng)態(tài)獲取ip的2種實(shí)現(xiàn)方法詳解
本篇文章是對(duì)開發(fā)板上動(dòng)態(tài)獲取ip的2種實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05