基本数据类型存储空间
轉(zhuǎn)自:http://blog.csdn.net/shuishanga/article/details/7313512#?
1.????? 存儲(chǔ)容量單位
? ? ? ? 計(jì)算機(jī)以“位”序列存儲(chǔ)數(shù)據(jù),每一“位”存儲(chǔ)0或1。這里的“位”便是存儲(chǔ)信息的一個(gè)單位:bit。
? ? ? ? 字節(jié):Byte 。1 Byte= 8 bits
? ? ? ? 字:“字”由若干個(gè)字節(jié)構(gòu)成,字的位數(shù)叫做字長(zhǎng),字長(zhǎng)就是說(shuō)字所對(duì)應(yīng)的二進(jìn)制數(shù)的長(zhǎng)度。不同的機(jī)器有不同的字長(zhǎng)。例如一臺(tái)8位機(jī),它的1個(gè)字就等于1個(gè)字節(jié),字長(zhǎng)為8位。同理:一臺(tái)16位機(jī),那么,它的1個(gè)字就由2個(gè)字節(jié)構(gòu)成,字長(zhǎng)為16位;而一臺(tái)32位機(jī),它的1個(gè)字就等于4個(gè)字節(jié),字長(zhǎng)為32位。
2.????? 基本數(shù)據(jù)類型存儲(chǔ)空間是否確定
? ? ? ? 在C和C++中,基本數(shù)據(jù)類型所占的存儲(chǔ)空間是不確定的,這與編譯環(huán)境或者機(jī)器硬件架構(gòu)有關(guān)。在C++中,一般地,short類型為半個(gè)機(jī)器字長(zhǎng),int類型為一個(gè)機(jī)器字長(zhǎng),而long 類型為一個(gè)或兩個(gè)機(jī)器字長(zhǎng)。(在32位機(jī)器中,int 和long類型通常字長(zhǎng)是相同的)。一般float 用一個(gè)字來(lái)表示,double用兩個(gè)字來(lái)表示——摘自《C++Primer》。
? ? ? ? 在Java中,有8種基本數(shù)據(jù)類型,它們所占的存儲(chǔ)空間是確定的,而這種存儲(chǔ)空間大小的不變性是是Java程序比其他語(yǔ)言程序更具可移植性的原因之一。另外Java中所有數(shù)據(jù)類型都是有符號(hào)的。
3.????? 基本數(shù)據(jù)類型存儲(chǔ)空間
下面在32位win7系統(tǒng)中,分別用Visual Studio 編譯C,C++程序,用eclipse編譯Java程序。運(yùn)行結(jié)果整理如下:
結(jié)果分析:
? ? ? ? 對(duì)于都存在的數(shù)據(jù)類型,在測(cè)試環(huán)境中有兩種數(shù)據(jù)類型存儲(chǔ)空間是不同的,上面用藍(lán)色標(biāo)出。?
測(cè)試:(注:C和C++中整型變量存在有符號(hào)數(shù)和無(wú)符號(hào)數(shù),Java中都是有符號(hào)的,但由于在C和C++中對(duì)于某種特定類型而言,有無(wú)符號(hào)只是取值范圍不同而已,并不影響存儲(chǔ)空間大小,故測(cè)試中采用隱含的形式,即有符號(hào)數(shù))
1) ?C程序
#include<stdio.h> void main() { printf("short: %d\n",sizeof(short)); printf("char: %d\n",sizeof(char)); printf("int: %d\n",sizeof(int)); printf("long: %d\n",sizeof(long)); printf("float: %d\n",sizeof(float)); printf("double: %d\n",sizeof(double)); printf("long double: %d\n",sizeof(long double)); }運(yùn)行結(jié)果:
2) C++程序
#include <iostream> using namespace std; int main() { cout<<"bool: "<<sizeof(bool)<<endl; cout<<"short: "<<sizeof(short)<<endl; cout<<"char: "<<sizeof(char)<<endl; cout<<"int: "<<sizeof(int)<<endl; cout<<"long: "<<sizeof(long)<<endl; cout<<"float: "<<sizeof(float)<<endl; cout<<"double: "<<sizeof(double)<<endl; cout<<"long double: "<<sizeof(long double)<<endl; return 0; }運(yùn)行結(jié)果:
3)Java程序
public class Test { public static void main(String args[] ) { System.out.println("byte: "+Byte.SIZE/8); System.out.println("short: "+Short.SIZE/8); System.out.println("char: "+Character.SIZE/8); System.out.println("int: "+Integer.SIZE/8); System.out.println("long: "+Long.SIZE/8); System.out.println("folat: "+Float.SIZE/8); System.out.println("double: "+Double.SIZE/8); } }運(yùn)行結(jié)果:
轉(zhuǎn)載于:https://www.cnblogs.com/zhangxiaosong/p/3322582.html
總結(jié)
以上是生活随笔為你收集整理的基本数据类型存储空间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java学习笔记(7)——Java基础之
- 下一篇: gdb core调试