基本類型char,int,float,double在內存中占用的大小測試


  測試char, short char, long char, int ,float, double在內存中的大小, 測試的系統為64位win7, 因為在32位系統和64位系統中各種類型編譯以后, 從內存獲取的大小是不同的, 所以此文僅供參考:

  char

  char為1個字節, 所以char的unsigned范圍是0到255(0->28-1);

  char如果是signed的話,就是去掉符號位值為-128到127(-28->27-1);

    

  上圖:小寫字符s的ascll碼為115, 轉化為16進制就是73;

  char str = 's'和 signed char str='s'的表示范圍都是 -27 到 27, unsigned char的表示范圍是0到28,雖然表示的范圍不同,但是在內存和棧中占用的內存大小是固定的;

  int 

  在32位系統中(現在基本上int都是32位),signed的范圍(-216到215-1), 精確的范圍表示為:-2147483648~+2147483647

  unsigned類型 的int 范圍:0~4294967295 即( 0到232-1)

  因為十進制的16在16進制中為10, 所以內存中顯示的是10;

    

  short int

  short int 只有int的一半, 也就是216, 范圍為(0到65536-1)

    

  long int

  long和long int 都是4字節, 要注意:long int的大小和系統是32位還是64位的有關系;

    

  long long int

  long long int有8字節, so表示范圍為-263到2的63-1;

    

  float

  float占用的內存為4個字節, 和int占用的空間是一樣的, 只是保存的方式不同, float采用的是指數的方式保存數字, 精確度會有問題;

  double

  double占用的8個字節的內存, 所以表示范圍會比float更大, double保存數值的方式也是為指數保存, 所以也有精確度的問題;

   signed和unsigned的區別

  有signed前綴的話, 就是包含負數和正數, 在絕對值的空間內, 數據集變少;

  有unsigned前綴的話, 只有正數, 能夠表示的整數范圍變大;

  32位的計算機和64位的計算機有什么區別

  1.64bit CPU擁有更大的尋址能力,最大支持到16GB內存,而32bit只支持4G內存

  2.64位CPU一次可提取64位數據,32位的CPU一次只能提取32位數據, 所以64位比32位提高了一倍,理論上性能會提升1倍。但這是建立在64bit操作系統,64bit軟件的基礎上的。

   其他:

  c++基本數據類型掃盲 :http://blog.csdn.net/ghevinn/article/details/22799977

作者: NONO
出處:http://www.cnblogs.com/diligenceday/
QQ:287101329
微信:18101055830 


免責聲明!

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



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