搜索
bottom↓
回复: 15

请教:enum占几个字节

[复制链接]

出0入0汤圆

发表于 2012-1-10 16:17:38 | 显示全部楼层 |阅读模式
在STM32里,
enum tagNumberEnum
{
    ZERO,
    ONE,
    TOW,
    THREE
};

sizeof(enum tagNumberEnum)发现是1个字节的。但是,sizeof(int)是4个字节的哦!
不是说,enum是与int的字节数一样的吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-1-11 09:40:07 | 显示全部楼层
enum类型声明不占内存。
enum变量占int的字节数

出0入0汤圆

发表于 2012-1-11 11:06:02 | 显示全部楼层
不一样,一个enum变量使用的内存大小是implementation-defined。
只要:实际占用的字节数能表达其中枚举量的所有值;其实际数据类型兼容于某种整形变量。

具体参考C99标准No1256,6.7.2.2节。

出0入0汤圆

发表于 2012-1-11 12:04:02 | 显示全部楼层
这个和编译器有关

出0入0汤圆

发表于 2012-1-12 22:00:11 | 显示全部楼层
enum是一种常量申明方式,不是数据结构,如果这此常量没有在程序中用到,不占用任何FLASH空间,字节数为0.如果在程序中用到,要具体看是什么场合中使用。

出0入0汤圆

发表于 2012-10-30 01:05:20 来自手机 | 显示全部楼层
能再深入说明一下吗?那如果enum里面的元素数目超过int所能表达的范围,那就占不仅sizeof(int)个字节了吧.

出0入0汤圆

发表于 2012-10-30 03:58:02 | 显示全部楼层
fshunj 发表于 2012-10-30 01:05
能再深入说明一下吗?那如果enum里面的元素数目超过int所能表达的范围,那就占不仅sizeof(int)个字节了吧. ...

那你需要1073741824个枚举元素,用26个字母大小写+10个数字 ,你起码需要6个字节来表示一个枚举元素,加上1个逗号,那就是7个字节
所以你需要7 *1073741824 个字节来构造这个enum, 那就是大概一个7G的c文件.....

我看好你哦~~~~~~~赶快尝试下,看看编译器会不会死机!

出0入0汤圆

发表于 2012-10-30 11:00:51 | 显示全部楼层
enum更多的作用,体现在编译阶段

出0入0汤圆

发表于 2012-10-30 11:22:18 | 显示全部楼层
看到TOW,我震惊鸟。。
头像被屏蔽

出0入0汤圆

发表于 2013-5-6 09:29:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2016-3-12 16:45:16 | 显示全部楼层
看书上说是相当于int型长度

出100入143汤圆

发表于 2016-3-12 17:11:20 | 显示全部楼层
MDK编译器是可以设置的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-7-20 10:32:01 | 显示全部楼层
very good!

出10入61汤圆

发表于 2017-7-20 11:18:44 | 显示全部楼层
PC中一般按INT处理  MCU编译器一般按数值范围处理, BYTE能表示的就用BYTE

出870入263汤圆

发表于 2017-7-20 11:43:17 | 显示全部楼层
jisaowang 发表于 2012-10-30 03:58
那你需要1073741824个枚举元素,用26个字母大小写+10个数字 ,你起码需要6个字节来表示一个枚举元素,加上1 ...

你很善于计算,但是!!!
enum aaa {
  MSK1 = (1<<0),
  MSK2 = (1<<1),
  MSK3 = (1<<2),
  MSK4 = (1<<3),
  MSK5 = (1<<31),
};
你看这样,编译器会死掉吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-22 10:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表