mysql枚举型占用几个字节_枚举占多少字节?

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

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

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

30c8d3ee466d58630cab2b38d14771a2.png

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

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

4793be0ef3f9877bc79afb925456ddde.png

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

1f9693effb47909594ccddf437c7db74.png

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值