• C、C++数据类型所占字节数


    C标准中并没有详细给出规定那个基本类型应该是多少字节数。详细与机器、OS、编译器有关,比方相同是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。

    所以int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):

    • sizeof(short int)<=sizeof(int)

    • sizeof(int)<=sizeof(long int)

    • short int至少应为16位(2字节)

    • long int至少应为32位。

    以下给出不同位数编译器下的基本数据类型所占的字节数:


    16位编译器


    char :1个字节
    char*(即指针变量): 2个字节
    short int : 2个字节
    int:  2个字节
    unsigned int : 2个字节
    float:  4个字节
    double:   8个字节
    long:   4个字节
    long long:  8个字节
    unsigned long:  4个字节


    32位编译器


    char :1个字节
    char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
    short int : 2个字节
    int:  4个字节
    unsigned int : 4个字节
    float:  4个字节
    double:   8个字节
    long:   4个字节
    long long:  8个字节
    unsigned long:  4个字节

    64位编译器

    char :1个字节
    char*(即指针变量): 8个字节
    short int : 2个字节
    int:  4个字节
    unsigned int : 4个字节
    float:  4个字节
    double:   8个字节
    long:   8个字节
    long long:  8个字节

    unsigned long:  8个字节


    下页是一个简单的測试样例(C++):

    执行环境,Windows 7旗舰版 + vc++6.0 + 32位系统

    #include<iostream>
    using namespace std;
    
    void main()
    {
     cout<<sizeof(char)<<endl;  //1
     cout<<sizeof(short)<<endl;  //2
     cout<<sizeof(int)<<endl;  //4
     cout<<sizeof(long)<<endl;  //4
     cout<<sizeof(float)<<endl;  //4
     cout<<sizeof(double)<<endl;  //8
     
     cout<<sizeof(char *)<<endl;  //4
     cout<<sizeof(short *)<<endl; //4
     cout<<sizeof(int *)<<endl;  //4
     cout<<sizeof(long *)<<endl;  //4
     cout<<sizeof(float *)<<endl; //4
     cout<<sizeof(double *)<<endl; //4
    
    
    
    
     //cout<<sizeof(void)<<endl;  //这句无法通过编译,可能是由于void代表空,不包括不论什么东西
     cout<<sizeof(void *)<<endl;  //4(相对于上一句,这句挺好理解的。"void *" 是一个指针)
    }

  • 相关阅读:
    docker学习笔记及hadoop集群搭建
    Zookeeper+Kafka+Storm+HDFS实践
    zookeeper集群搭建
    scala学习笔记——特质
    scala学习笔记-集合
    scala学习笔记-隐式转换和隐式参数
    RDD 重新分区,排序 repartitionAndSortWithinPartitions
    scala学习笔记——操作符
    JAVA基础系列(一) 概述与相关概念
    网络收藏夹
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6819440.html
Copyright © 2020-2023  润新知