C++基本數據類型范圍和區別(詳細)


一、基本類型的大小及范圍的總結(以下所講都是默認在32位操作系統下):

字節:byte;位:bit。

1.短整型short:所占內存大小:2byte=16bit;所能表示范圍:-32768~32767;(即-2^15~2^15-1)

unsigned short:所占內存大小:2byte=16bit;所能表示范圍:0~65535;(即0~2^16-1)

2.整型int:所占內存大小:4byte=32bit;所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)

unsigned int: 所占內存大小:4byte=32bit;所能表示范圍:0~4294967295;(即0~2^32-1)

3.長整型long:所占內存大小:4byte=32bit;所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)

unsigned long: 所占內存大小:4byte=32bit;所能表示范圍:0~4294967295;(即0~2^32-1)

注:上面所說的全部是有符號型的,short,int,long都默認為有符號型,其中long和int都占4個字節的空間大小,他們有什么區別呢?

16位操作系統:long:4字節,int:2字節
32位操作系統:long:4字節,int:4字節
64位操作系統:long:8字節,int:4字節

int型在不同位數操作系統中所占用的字節數不同,如果想編寫可移植性好的程序,早年流行16位和32位操作系統時最好用long修飾int型,現在流行32位和64位操作系統,用int就挺多了。當然這些都看你怎么去理解它了,畢竟它們在不同操作系統所占字節數不固定,所以各自都有其適用之處,不可定論其好壞。

下面是對它們的有科學依據的規定:

C語言規定:無論什么平台都要保證long型占用字節數不小於int型, int型不小於short型。

4.字符型char:所占內存大小:1byte=8bit;所能表示范圍:不確定!!!!;

unsigned char:所占內存大小:1byte=8bit;所能表示范圍:0~255;(0~2^8-1)

signed char: 所占內存大小:1byte=8bit;所能表示范圍:-128~127;(-2^7~2^7-1)

char的默認類型不確定有可能是unsigned,也有可能是signed,主要更具編譯器而定,可以自己測試一下編譯器的默認char的符號類型。

5.布爾類型bool:所占內存大小:1byte=8bit;所能表示的范圍:只能取兩個值false或者true;所以最小值就是:0, 最大值:1.

6.單精度float: 所占內存大小:4byte=32bit;所能表示的范圍:(1.17549e-038)~(3.40282e+038);

//注意:浮點數在內存中都是按科學計數法來存儲的,浮點數的精度是由尾數的位數決定的,大家記住即可不必深究;

7.雙精度double:所占內存大小:8byte=64bit;所能表示的范圍:(2.22507e-308)~(1.79769e+308);

注:如何區分和使用這兩個浮點類型呢,首先float和double的精度不同,float保留到小數點后面7位,而double保留到小數點后面16位,float能保證6位有效數字,而double能保證15位有效數字,如果在不追求精度的的情況下當然用 float比較好,節省內存,如果需要很高的精度的情況下,最好還是用double,平時我們定義浮點型變量一般都用double,畢竟精度高,一般精度的損失是不能忽略的。

這里主要是和浮點格式存儲數據相關,單雙精度的存儲數據的浮點格式中的尾數和階數表示長度不同,進而導致表示范圍和精度不同。

8.字符串string:由於string在c++中屬於類類型,不是基本數據類型,類不能計算其在內存中所占大小,非要用sizeof(string)來算的話,一般算出來的結果是 sizeof(string)=4byte, 如果string字符串內容很多,很明顯就不是其真實大小,string類里面有計算其字節大小的函數如:size(),length()。

總結
我們在使用基礎數據類型時原則是:就要保證精度、防止溢出、又要盡可能的少地占用內存。在計算機語言中,,數據類型的內涵除了包括數據的存儲位數和存儲格式之外,還隱含包括了該類型數據可進行那些運算,比如整型和實數都可以進行算數運算(加減乘除),可也進行關系運算(即比較大小),但是整型還可以進行位運算,而實數不行。
以上就是本文關於C和C++中的基本數據類型的大小及表示范圍詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
————————————————
版權聲明:本文為CSDN博主「賣火柴的小男孩2020」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u014644594/article/details/103886264


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM