C++基本数据类型解惑
記得剛學(xué)C語(yǔ)言的時(shí)候,對(duì)那些double,float,long,unsigned int各種混亂,基本是隨便用,對(duì)數(shù)據(jù)類型沒(méi)有一個(gè)整體的框架.最近學(xué)習(xí)<<C++ primer plus>>一書(shū),清晰了許多.于此以讀書(shū)筆記的形式記錄關(guān)于C++基本數(shù)據(jù)類型的知識(shí).
高度概括,C++數(shù)據(jù)類型只有兩種,整型與浮點(diǎn)型.
一,整數(shù):
就是沒(méi)有小數(shù)部分的數(shù)字(除bool外按寬度遞增排序).它包括:
- char
- short
- int
- long
- long long
- bool
?其中除bool外每種類型都有符號(hào)版本與無(wú)符號(hào)版本.共11種.
? ? 兩種較為特殊的情況
- char最常用來(lái)處理字符,但由于所有的字符都有其數(shù)值編碼(例如ASCII字符集),所以char可以看做比short更小的整型.
- bool:字面值true可轉(zhuǎn)化為1,false可轉(zhuǎn)換為0.另外任何數(shù)值在字都可以轉(zhuǎn)換為bool值 非零數(shù)值為true,0為false.
unsigned與signed:
當(dāng)數(shù)值不會(huì)為負(fù)時(shí),比如生命值,人口數(shù)量等,可以使用無(wú)符號(hào)類型,可以增大變量的最大儲(chǔ)存值.
例如:short表示的范圍為-32768到+32767 則unsigned版本為0-65535
?
整型如此之多,那么,如何選擇整數(shù)類型:
- 如果沒(méi)有足夠的理由來(lái)用其他類型,則用int.因?yàn)閕nt通常被設(shè)置為對(duì)計(jì)算機(jī)而言最為自然的長(zhǎng)度,即處理效率最高的長(zhǎng)度.
- 如果變量表示的值不可能為負(fù)數(shù),則可以使用無(wú)符號(hào)類型,這樣可以表達(dá)更大的值.
- 如果知道變量表示的值大于16位整數(shù)的最大可能值,,則使用long(即使有的系統(tǒng)int為32位,確保程序的可移植性)
- 如果儲(chǔ)存的值超過(guò)20億,則使用long long
- 如果short比int小,則可以使用short以節(jié)省內(nèi)存.(C++中short至少16位,int至少與short一樣長(zhǎng)).
- 如果節(jié)省內(nèi)存很重要,則用short
二,浮點(diǎn)數(shù):
能夠表示帶小數(shù)部分的數(shù)字
浮點(diǎn)的意思:
諸如2.5,3.15159之類的數(shù)字,計(jì)算機(jī)將其分為兩部分進(jìn)行儲(chǔ)存.一部分表示值,另一部分用于對(duì)數(shù)值進(jìn)行縮放.
例如:34.125與3412.5它們除了小數(shù)點(diǎn)位置不同之外,數(shù)字都相同.可以把第一個(gè)數(shù)字看成0.34125(基準(zhǔn)值)放大100倍,第二個(gè)數(shù)看成0.34125放大10000倍.縮放因子的作用是移動(dòng)小數(shù)點(diǎn)的位置,浮點(diǎn)因此得名.
C++中浮點(diǎn)類型有以下3種:
- float
- double
- long double
?這三種有效位數(shù)可以一樣多,通常,float為32位,double為64位,long double為80,96或者128位.
如何選擇浮點(diǎn)數(shù)類型:
- 精度要求高的時(shí)候用double.double精度高,有效數(shù)字16位,float精度6位或7位
- 能用單精度時(shí)不要用雙精度,以省內(nèi)存.(double消耗內(nèi)存是float的兩倍,double的運(yùn)算速度比f(wàn)loat慢得多)
- 補(bǔ)充一點(diǎn):
在在代碼中對(duì)浮點(diǎn)數(shù)據(jù)類型直接使用== 、<= 、>=、 !=等運(yùn)算符進(jìn)行比較都是不正確的。正確的方法應(yīng)該是 將其差或和于小數(shù)進(jìn)行比較??
通常與10^6 比如浮點(diǎn)數(shù)與零的比較:
等于0關(guān)系:? fabs(i)<=1e-6
大于0關(guān)系:? i>1e-6
小于0關(guān)系:? i<1e-6
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/morningsky/p/4449158.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C++基本数据类型解惑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 滚筒买8kg还是10kg
- 下一篇: VCL线程不安全