zoukankan      html  css  js  c++  java
  • 枚举占多少字节?

    网上暂时只找到了这种描述:

      标准C并没有明确规定枚举类型占用空间的大小,标准中只是说“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,同时标准中也说明了:“枚举类型中的枚举子的值必须要能够用一个int类型表述”,也就是说,枚举类型的尺寸不能够超过int类型的尺寸,但是是不是必须和int类型具有相同的尺寸呢?上面的标准已经说得很清楚了,只要能够容纳最大的枚举子的值的整数就可以了,那么就是说可以是char、short和int。”不同的C编译器,对enum类型的大小作了不同的定义,而程序员是不能认为的修改枚举类型占用空间的。

      今天工作用到了,想查一下枚举类型占多少个字节,但是网上没有找到确切的答案,可能还是因为用枚举的人比较少吧,自己测试了一下发现。

    (1)枚举的大小是按照enum中元素最大值所占的内存大小来决定的,不像结构体那样有多少个元素就按各个元素所占字节叠加。

    (2)当上图中的one的值小于1000000000(9个0)时,打印出来的sizeof(test)就是4个字节的,如下图。

    (3)当one的值大于等于10000000000(10个0)时,打印出来的sizeof(test)就是8个字节的,如下图。

    (4)当one的值大于10000000000(10个0)后,无论再怎么增加,打印出来的sizeof(test)保持8个字节,不会增多。

      可见枚举类型的大小会随着其中的元素的大小而发生变化,虽然几乎没有人会用这么大的数来作为枚举,但起码我们得知道枚举类型字节数的大小是有可能发生改变的,所以到程序中有数据需要和别的程序进行交流,譬如上位机和下位机的通信数据,就尽量不要在数据包中包含有枚举类型,以免发生歧义。

  • 相关阅读:
    Unity网格合并_材质合并
    windows7任务管理器内存相关列详细解释
    移动平台unity3d优化
    各种移动GPU压缩纹理的使用方法
    opengl VAO ,VBO
    GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处
    Unity3d的批渲染 batch rendering
    Android真机调测Profiler
    图片占用内存计算方法
    Unity3D–Texture图片空间和内存占用分析
  • 原文地址:https://www.cnblogs.com/xing-ting/p/10105461.html
Copyright © 2011-2022 走看看