您好,登錄后才能下訂單哦!
本文研究的主要問題時關于C和C++中的基本數據類型int、long、long long、float、double、char、string的大小及表示范圍,具體介紹如下。
一、基本類型的大小及范圍的總結(以下所講都是默認在32位操作系統下):
字節:byte;位:bit。
1.短整型short:所占內存大小:2byte=16bit;
所能表示范圍:-32768~32767;(即-2^15~2^15-1)
2.整型int:所占內存大小:4byte=32bit;
所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned: 所占內存大小: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)
singned 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=32bit;
所能表示的范圍:(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++中的基本數據類型的大小及表示范圍詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。