zoukankan      html  css  js  c++  java
  • 基本数据类型存储空间

    转自:http://blog.csdn.net/shuishanga/article/details/7313512# 

    1.      存储容量单位

            计算机以“位”序列存储数据,每一“位”存储0或1。这里的“位”便是存储信息的一个单位:bit。

            字节:Byte 。1 Byte= 8 bits

            字:“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度。不同的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。同理:一台16位机,那么,它的1个字就由2个字节构成,字长为16位;而一台32位机,它的1个字就等于4个字节,字长为32位。

    2.      基本数据类型存储空间是否确定

            在C和C++中,基本数据类型所占的存储空间是不确定的,这与编译环境或者机器硬件架构有关。在C++中,一般地,short类型为半个机器字长,int类型为一个机器字长,而long 类型为一个或两个机器字长。(在32位机器中,int 和long类型通常字长是相同的)。一般float 用一个字来表示,double用两个字来表示——摘自《C++Primer》。

            在Java中,有8种基本数据类型,它们所占的存储空间是确定的,而这种存储空间大小的不变性是是Java程序比其他语言程序更具可移植性的原因之一。另外Java中所有数据类型都是有符号的。

    3.      基本数据类型存储空间

    下面在32位win7系统中,分别用Visual Studio 编译C,C++程序,用eclipse编译Java程序。运行结果整理如下:


    结果分析:

            对于都存在的数据类型,在测试环境中有两种数据类型存储空间是不同的,上面用蓝色标出。 

    测试:(注:C和C++中整型变量存在有符号数和无符号数,Java中都是有符号的,但由于在C和C++中对于某种特定类型而言,有无符号只是取值范围不同而已,并不影响存储空间大小,故测试中采用隐含的形式,即有符号数)

    1)  C程序

     #include<stdio.h>  
    void main()  
    {  
        printf("short: %d
    ",sizeof(short));  
        printf("char: %d
    ",sizeof(char));  
        printf("int: %d
    ",sizeof(int));  
        printf("long: %d
    ",sizeof(long));  
        printf("float: %d
    ",sizeof(float));  
        printf("double: %d
    ",sizeof(double));  
        printf("long double: %d
    ",sizeof(long double));  
    }  

    运行结果:


    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;  
    }  

    运行结果:


    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);  
        }  
    }  

    运行结果:

  • 相关阅读:
    SQL Data Services Abandons REST for TDS API and Knocks My Socks Off
    C# Lambda Expressions 简介
    Web.config 和 App.config 区别
    XPO 第三方控件学习(DevExpress Persistent Object )系列查询
    进销存管理系统 系列
    MOSS 学习系列(十万个为什么)--为什么我要定制审批流程的时候找不到审批的选项?
    XPO 第三方控件学习(DevExpress Persistent Object )系列 其他(session,事务,有效性检查...
    如何使用三态工作流(一)
    english interview example
    How to build a K2 SharePoint Workflow(2)
  • 原文地址:https://www.cnblogs.com/zhangxiaosong/p/3322582.html
Copyright © 2011-2022 走看看