c++中 int, long long, double 等数据类型的长度及范围整理
先附上一個比較直觀的表,長度表示字節(jié):
?
?byte: 字節(jié) ?bit: 位
1. 短整型short:
? ? 所占內(nèi)存大小:2byte=16bit;
? ? 所能表示范圍:-32768~32767;(即-2^15~2^15-1)
2. 整型int:
? ? 所占內(nèi)存大小:4byte=32bit;
? ? 所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)
? ? unsigned: ?
? ? 所占內(nèi)存大小:4byte=32bit;
? ? 所能表示范圍:0~4294967295;(即0~2^32-1)
3. 長整型long:
? ? 所占內(nèi)存大小:4byte=32bit;
? ? 所能表示范圍:-2147483648~2147483647;(即-2^31~2^31-1)
? ? unsigned long: ?
? ? 所占內(nèi)存大小:4byte=32bit;
? ? 所能表示范圍:0~4294967295;(即0~2^32-1)
4. long long:
? ? 所占內(nèi)存大小:8byte=64bit;
? ? 所能表示范圍:-9223372036854775808~9223372036854775807;(即-2^63~2^63-1)
? ? unsigned long: ?
? ? 所占內(nèi)存大小:8byte=64bit;
? ? 所能表示范圍:0~1844674407370955161;(即0~2^64-1)
? ? 注:上面所說的全部是有符號型的,short,int,long, long long都默認為有符號型,其 中l(wèi)ong和int都占4個字節(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)時最好用long修飾int型,現(xiàn)在流行32位和64位操作系統(tǒng),用int就挺多了。當(dāng)然這些都看你怎么去理解它了,畢竟它 們在不同操作系統(tǒng)所占字節(jié)數(shù)不固定,所以各自都有其適用之處,不可定論其好壞。
? ? 下面是對它 們的有科學(xué)依據(jù)的規(guī)定:
? ? C語言規(guī)定:無論什么平臺都要保證long型占用字節(jié)數(shù)不小于int型, int型不小于short型。
5. 字符型char:
? ? 所占內(nèi)存大小:1byte=8bit;
? ? 所能表示范圍:不確定!!!!;
? ? unsigned char:
? ? 所占內(nèi)存大小:1byte=8bit;
? ? 所能表示范圍:0~255;(0~2^8-1)
? ? singned char: ?
? ? 所占內(nèi)存大小:1byte=8bit;
? ? 所能表示范圍:-128~127;(-2^7~2^7-1)
? ? char的默認類型不確定有可能是unsigned,也有可能是signed,主要更具編譯器而定,可以自己測試一下編譯器的默認char的符號類型。
6. 布爾類型bool:
? ? 所占內(nèi)存大小:1byte=8bit;
? ? 所能表示的范圍:只能取兩個值false或者true;所以最小值就是:0, 最大值:1.
7. 單精度float: ? ?
? ? 所占內(nèi)存大小:4byte=32bit;
? ? 所能表示的范圍:(1.17549e-038)~(3.40282e+038);
? ? 注意:浮點數(shù)在 內(nèi)存中都是按科學(xué)計數(shù)法來存儲的,浮點數(shù)的精度是由尾數(shù)的位數(shù)決定的,大家記住即可不必深究;
8. 雙精度double:
? ?所占內(nèi)存大小:8byte=64bit;
? ?所能表示的范圍:(2.22507e-308)~(1.79769e+308);
? ? 注:如何區(qū)分和使用這兩個浮點類型呢,首先float和double的精度不同, float保留到小數(shù)點后面7位,而double保留到小數(shù)點后面16位,float能保證6 位有效數(shù)字,而double能保證15位有效數(shù)字,如果在不追求精度的的情況下當(dāng)然用 float比較好,節(jié)省內(nèi)存,如果需要很高的精度的情況下,最好還是用 double,平時我們定義浮點型變量一般都用double,畢竟精度高,一般精度 的損失是不能忽略的。
9. 字符串string:由于string在c++中屬于類類型,不是基本數(shù)據(jù)類型,類不能計算其在內(nèi) 存中所占大小,非要用sizeof(string)來算的話,一般算出來的結(jié)果是 sizeof(string)=4byte,如果string字符串內(nèi)容很多,很明顯就不是其 真實大小,string類里面有計算其字節(jié)大小的函數(shù)如:size(),length()。
?
總結(jié)
以上是生活随笔為你收集整理的c++中 int, long long, double 等数据类型的长度及范围整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssr安卓版下载(ssr安卓版)
- 下一篇: 配置VSCodeC++环境