C和C++中的基本數(shù)據(jù)類型的大小及表示范圍詳解
本文研究的主要問(wèn)題時(shí)關(guān)于C和C++中的基本數(shù)據(jù)類型int、long、long long、float、double、char、string的大小及表示范圍,具體介紹如下。
一、基本類型的大小及范圍的總結(jié)(以下所講都是默認(rèn)在32位操作系統(tǒng)下):
字節(jié):byte;位:bit。
1.短整型short:所占內(nèi)存大?。?byte=16bit;
所能表示范圍:-32768~32767;(即-2^15~2^15-1)
2.整型int:所占內(nèi)存大?。?byte=32bit;
所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned: 所占內(nèi)存大小:4byte=32bit;
所能表示范圍:0~4294967295;(即0~2^32-1)
3.長(zhǎng)整型long:所占內(nèi)存大?。?byte=32bit;
所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned long: 所占內(nèi)存大?。?byte=32bit;
所能表示范圍:0~4294967295;(即0~2^32-1)
注:上面所說(shuō)的全部是有符號(hào)型的,short,int,long都默認(rèn)為有符號(hào)型,其中l(wèi)ong和int都占4個(gè)字節(jié)的空間大小,他們有什么區(qū)別呢?
16位操作系統(tǒng):long:4字節(jié),int:2字節(jié)
32位操作系統(tǒng):long:4字節(jié),int:4字節(jié)
64位操作系統(tǒng):long:8字節(jié),int:4字節(jié)
int型在不同位數(shù)操作系統(tǒng)中所占用的字節(jié)數(shù)不同,如果想編寫可移植性好的程序,早年流行16位和32位操作系統(tǒng)時(shí)最好用long修飾int型,現(xiàn)在流行32位和64位操作系統(tǒng),用int就挺多了。當(dāng)然這些都看你怎么去理解它了,畢竟它們?cè)诓?同操作系統(tǒng)所占字節(jié)數(shù)不固定,所以各自都有其適用之處,不可定論其好壞。
下面是對(duì)它們的有科學(xué)依據(jù)的規(guī)定:
C語(yǔ)言規(guī)定:無(wú)論什么平臺(tái)都要保證long型占用字節(jié)數(shù)不小于int型, int型不小于short型。
4.字符型char:所占內(nèi)存大?。?byte=8bit;
所能表示范圍:不確定?。。。?;
unsigned char:所占內(nèi)存大?。?byte=8bit;
所能表示范圍:0~255;(0~2^8-1)
singned char: 所占內(nèi)存大?。?byte=8bit;
所能表示范圍:-128~127;(-2^7~2^7-1)
char的默認(rèn)類型不確定有可能是unsigned,也有可能是signed,主要更具編譯器而定,可以自己測(cè)試一下編譯器的默認(rèn)char的符號(hào)類型。
5.布爾類型bool:所占內(nèi)存大小:1byte=8bit;
所能表示的范圍:只能取兩個(gè)值false或者true;所以最小值就是:0, 最大值:1.
6.單精度f(wàn)loat: 所占內(nèi)存大?。?byte=32bit;
所能表示的范圍:(1.17549e-038)~(3.40282e+038);//注意:浮點(diǎn)數(shù)在內(nèi)存中都是按科學(xué)計(jì)數(shù)法來(lái)存儲(chǔ)的,浮點(diǎn)數(shù)的精度是由尾數(shù)的位數(shù)決定 的,大家記住即可不 必深究;
7.雙精度double:所占內(nèi)存大?。?byte=32bit;
所能表示的范圍:(2.22507e-308)~(1.79769e+308);
注:如何區(qū)分和使用這兩個(gè)浮點(diǎn)類型呢,首先f(wàn)loat和double的精度不同,float保留到小數(shù)點(diǎn)后面7位,而double保留到小數(shù)點(diǎn)后面16位,float能保證6位有效數(shù)字,而double能保證15位有效數(shù)字,如果在不追求精度的的情況下當(dāng)然用 float比較好,節(jié)省內(nèi)存,如果需要很高的精度的情況下,最好還是用double,平時(shí)我們定義浮點(diǎn)型變量一般都用double,畢竟精度高,一般精度的損失是不能忽略的。
8.字符串string:由于string在c++中屬于類類型,不是基本數(shù)據(jù)類型,類不能計(jì)算其在內(nèi)存中所占大小,非要用sizeof(string)來(lái)算的話,一般算出來(lái)的結(jié)果是 sizeof(string)=4byte, 如果string字符串內(nèi)容很多,很明顯就不是其真實(shí)大小,string類里面有計(jì)算其字節(jié)大小的函數(shù)如:size(),length()。
總結(jié)
以上就是本文關(guān)于C和C++中的基本數(shù)據(jù)類型的大小及表示范圍詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Visual?Studio?2022?激活碼(親測(cè)可用)
在?Visual?Studio?2019?的基礎(chǔ)上,新版集成開(kāi)發(fā)壞境提供了非常多的改進(jìn),包括對(duì)?64?位、.NET?6?的支持,為核心調(diào)試器提供更好的性能。本文給大家分享Visual?Studio?2022?激活碼,需要的朋友參考下吧2021-12-12C++數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過(guò)本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2021-08-08C++回文數(shù)及素?cái)?shù)問(wèn)題計(jì)算方法
這篇文章主要介紹了C++回文數(shù)及素?cái)?shù)問(wèn)題計(jì)算方法,可實(shí)現(xiàn)一定范圍內(nèi)的素?cái)?shù)與回文數(shù)運(yùn)算功能,涉及C++字符串遍歷與數(shù)字?jǐn)?shù)學(xué)運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2016-05-05C語(yǔ)言實(shí)現(xiàn)自動(dòng)發(fā)牌程序
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)自動(dòng)發(fā)牌程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04C語(yǔ)言 strcpy和memcpy區(qū)別詳細(xì)介紹
這篇文章主要介紹了C語(yǔ)言 strcpy和memcpy區(qū)別詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01static_cast,dynamic_cast,reinterpret_cast和const_cast的區(qū)別詳解
以下是對(duì)static_cast,dynamic_cast,reinterpret_cast和const_cast之間的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09C++中關(guān)鍵字 override 的簡(jiǎn)析
這篇小文來(lái)聊聊 C++中的關(guān)鍵字 override,它的含義其實(shí)兩句話就說(shuō)完了,但為了敘述的完整性,讓我們從虛函數(shù)說(shuō)起。感興趣的小伙伴可以跟著小編一起學(xué)習(xí)下面文章內(nèi)容2021-09-09