enum枚举变量所占内存大小

C++学习篇--enum枚举类型 enum枚举类型以前没有深究过, 阅读详情
AI摘要

本文详细解释了枚举类型的内存占用原理,指出枚举变量实际上只占用与枚举值最大整型常数相同的空间,并通过实例展示了如何使用sizeof运算符来获取枚举变量的大小。

既然,struct结构体变量大小等于结构体中的各个成员变量所占内存大小总和,union共用体变量大小等于共用体结构中占用内存最大的成员的内存大小。
那么enum枚举变量所占内存大小怎么计算?

首先先明白概念:
数据类型,指固定内存大小的别名,如int类型为4个字节内存。
变量,一段连续存储空间的别名。这段连续存储空间的大小,即变量的大小,由定义该变量的数据类型决定,即该数据类型代表的固定内存大小。数据类型,是变量的模板。

应用到枚举上:
枚举类型,指一个被命名的整型常数的集合。即枚举类型,本质上是一组常数的集合体,只是这些常数有各自的命名。枚举类型,是一种用户自定义数据类型。
枚举变量,由枚举类型定义的变量。枚举变量的大小,即枚举类型所占内存的大小。由于枚举变量的赋值,一次只能存放枚举结构中的某个常数。所以枚举变量的大小,实质是常数所占内存空间的大小(常数为int类型,当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节),枚举类型所占内存大小也是这样。
另外,可以用编译器内置的指示符sizeof,计算出枚举变量(或枚举类型)的大小进行验证。
------------------------------------------------------------------------------------------------
例子:
int main()
{
enum number {
one = 1,
two = 2,
three = 3,
foure = 4,
};
enum number num1;

printf("int sizeof:%d\n",sizeof(int));//int类型占用几个字节;
printf("enum number sizeof:%d\n",sizeof(enum number));//枚举结构enum number占用几个字节;
printf(" variable num1 sizeof:%d\n",sizeof(num1));//定义后的枚举变量占用几个字节;

num1 = three;
printf("after 'num1 = three' ,variable num1 sizeof:%d\n",sizeof(num1));//赋值后的枚举变量占用几个字节;
}

结果打印:


C语言联合体/共用体/union,枚举使用大全 文章目录一、前言二、联合体1.联合体基础2. 联合体的使用方法和使用场景2.1 多种访问内存途径共存2.2 联合体union和大小端(big-endian、little-endian)2.3 联合体union所占内存空间大小2.4 联合体union适用场合2.5 联合体使用的几个小技巧2.5 本质&进阶三、枚举1.枚举基础知识2.枚举变量的定义3.枚举的使用场景和使用方法3.1 枚举的遍历3.2 将整数转换为枚举 一、前言 构造类型或复杂类型主要有结构体、联合体和枚举。 结构体我们一般使用的比较频繁 阅读详情

相关推荐

结构体枚举与联合

结构体struct - 基本介绍 struct是结构体的关键字,它将一些相关联的数据打包成一个整体,这些相关联的数据可以是不同的类型。它们被称为结构体的成员,结构体的成员可以是标量、数组、指针、或者是其他结构体。 - 结构的声明 假设我们要建立学生档案,要纳入学生的姓名,年龄和性别三个内容。那么我们可以通过建立一个结构体来实现这个过程。 struct student { char...

higher_and的博客 1898

枚举类型在结构体中占多少字节

这个问题是我在写结构体时发现的, 编译器突然在一个枚举类型的成员变量后面提醒字节未对齐。 于是,枚举类型在结构体中占多少字节这个问题就产生了。 一开始我以为它只占一个字节,结果我从上到下看了一下发现不对。 如果占一个字节说明这不会提示有问题,应该直接对齐了才对 所以它一定不是占一个字节。 带着好奇心上网找了一下, 网上暂时只找到了这种描述:   标准C并没有明确规定枚举类...

Tianqf505的博客 1万+

MIC(Maximal Information Coefficient)最大互信息系数

MIC(Maximal Information Coefficient)最大互信息系数是一种用于衡量两个变量之间相关性的统计量。它扩展了传统的互信息(MI)和条件互信息(CMI)的概念,具有更广泛的应用范围。MIC能够捕获包括功能性和非功能性的广泛的关联,具有普遍性和公平性。普遍性意味着在足够的样本量下,MIC能够捕捉到广泛的相关关系,而不仅仅局限于特定的功能类型;公平性则意味着MIC对不同类型的包含同等噪声的关系给出了相似的分数。需要注意的是,虽然MIC具有很多优点,但它也有一些局限性。

qlkaicx的博客 4603

C语言枚举类型的大小

主流编译器如:gcc、vc、MinGW-gcc等枚举变量均为4字节。少量编译器会根据枚举个数做优化,如只有3个枚举值时,size可能为1。 enum长度不确定会带来可移植性问题,如果第三方库API接口使用enum类型,编译和调用库时一旦有关enum长度的编译器设置不一致,API接口层对数值的解析就不匹配。比如上层应用编译时没有用-fshort-enums,默认用4字节空间来存储使用enum...

Oliver King 的小窝 1万+

数字IC后端笔记-libcell命名规则与标准单元库介绍

ND3D1BWP13T40P140HVTND3D1BWP13T40P140HVTTSMC两种工艺,Metalization Stack的截面示意图:还有一层AP用来走RDL,RDL这层是最厚的一层,一般用于连接IO的bump,信号线基本上不会用这层绕线。

sinat_41774721的博客 2460

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 898

【牛客网】—— 枚举(enum)所占内存大小

这里我们先来看一道题 这是牛客网上的一个题,我在计算这个类的大小时,对于enum枚举类型所占空间的大小有了一些困惑,通过查阅资料我了解到其实在C++标准文档中是这样说明的:“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,同时标准中也说名了:“枚举类型中的枚举子的值必须要能够用一个int类型表述”,也就是说,枚举类型的尺寸不能够超过int类型的尺寸,但是是不是必须和int类型具有相同的尺...

chenxiyuehh的博客 1万+

整车的智能配电系统

本文探讨了汽车电网安全的重要性,分析了传统汽车电网的现状,并重点介绍了半导体在汽车智能配电系统中的作用。半导体凭借其单向导电性和可控性,如二极管、MOSFET等,提供了更高效、安全的电力控制。通过对比传统保险丝与半导体器件,阐述了半导体在过流保护、电压监测和故障诊断方面的优势,强调其在减少安全隐患、提高能源管理和续航里程方面的贡献。极氪智能配电系统展示了如何运用半导体技术实现整车能源的精细化管理,降低维修成本,减少线束复杂性,提升安全性能。

让你爱上电路设计 1610

结构体,枚举,联合大小的计算规则

结构体,枚举,联合大小的计算规则

weixin_69884785的博客 1134

YOLOv11改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例

本文记录的是基于SimAM注意力模块的YOLOv11目标检测方法研究。SimAM注意力模块通过优化能量函数来获得每个神经元的三维权重,而或增加计算复杂度。若是有轻量化需求的小伙伴,无参的注意力模块也许是一个不错的选择。

Limiiiing的博客 9032

PCB仿真软件:Altium Designer_(18).PCB设计中的热管理

在PCB设计中,热管理是一个至关重要的环节。随着电子设备的集成度越来越高,功耗和发热量也随之增加,不合理的热设计可能导致电路板过热,从而影响电路的性能和可靠性。热管理不仅能够提高电路板的使用寿命,还能确保电路在各种环境条件下的稳定工作。本节将详细介绍如何在Altium Designer中进行有效的热管理,包括热分析、热设计和热仿真等关键步骤。

kkchenjj的博客 1984

枚举,联合体,结构体大小计算

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 关于枚举,联合体,结构体自己的理解,以及大小的计算 提示:以下是本篇文章正文内容,下面案例可供参考 一、枚举类型:(enum) 枚举是一个被命名的整型常数的集合。比如人的性别只有男女之分。 在枚举中第一个枚举成员默认为0;后面的枚举成员都是前面的枚举成员加1得到。 枚举元素不能是变量,得是常数。所以枚举元素也叫枚举常量。不能对枚举元素赋值。 元素类型没有特别声明,默...

lulusong3的博客 869

22、忆阻器、忆阻系统及其神经形态应用综述

本文综述了忆阻器与忆阻系统的理论基础及其在神经形态系统中的广泛应用。从忆阻器的基本定义出发,介绍了其在非线性电路、存储技术、通信和神经形态计算等领域的应用潜力。重点探讨了基于忆阻器的神经元模型(如Hodgkin-Huxley、FitzHugh-Nagumo和Hindmarsh-Rose模型)、突触实现方式及多种忆阻神经网络架构,包括细胞神经网络、脉冲神经网络和递归神经网络等。此外,深入分析了忆阻器在水库计算中的理论研究与硬件实现进展,展示了其在时间序列处理、模式识别和信号预测等方面的优异性能。尽管忆阻技术前

kiwi8的博客 207

C语言学习笔记8——enum, sizeof,typedef

enum的分析 在C语言中: enum是一种自定义类型 enum的值是可以根据需要自定义的整型值 第一个定义enum值默认为0 默认情况下的enum值是在前一个定义值的基础上加1 enum类型的变量只能取定义时的离散值 enum的特殊意义: enum中定义的值是C语言中真正意义上的常量 在工程中enum多用于定义整型常量 /* 测试程序 */ #include &lt...

DSH2418C的博客 340

Python爬虫技术应用:体育赛事直播数据抓取与分析

Web爬虫(Web Crawling)是一种通过模拟浏览器行为从网站获取数据的技术。发送请求:发送HTTP请求(通常是GET或POST请求)获取目标网页的HTML内容。解析网页:使用解析工具(如lxml)从HTML中提取出所需要的信息。存储数据:将抓取到的数据存储到数据库、文件或数据结构中,供后续分析和使用。数据分析与展示:使用数据分析工具(如PandasMatplotlib)对数据进行处理、清洗和可视化,生成有价值的报告和图表。Requests:用于发送静态网页的HTTP请求并获取响应。

2201_76125261的博客 1309

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

枚举类型enum详解

enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),因为枚举类型是一种基本数据类型,而不是一种构造类型,它不能再分解成什么基本类型。好像可以把int型的数据直接赋值给enum变量,实际上是不行的,需要进行强制类型转换,C语言提供了一种称为“枚举”的类型,其中一个枚举常量的占的字节数为4个字节,恰好和int类型的变量占的字节数相同,假设把这些枚举常量说明为整型,字符型或其他类型显然是不妥当的。

让学习成为一种习惯 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C语言:关键字---enum(声明枚举类型)

# 一、enum 简介 **enum** 是C语言中的一种数据类型。 在实际问题中,有些变量的取值被限定在一个有限的范围内。 **例如:** 一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。 如果把这些量说明为整型,字符型或其它类型显然是不妥当的。 C语言为这种类型的变量的定义,提供了**enum关键字**。 .........

MQ0522的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

枚举变量enum的大小

我们可以通过下面一个小程序来判断枚举变量的大小。#include <stdio.h>int main() { enum color { GREEN = 1, RED, BLUE, GREEN_RED = 10, GREEN_BLUE }colorval; printf("%d %d %d\n

nigulasi_dawei的博客 3619

C语言中的四种常量详解:字面常量、const常变量、#define常量、enum枚举常量

C语言中常量定义方式及其应用场景总结 C语言提供了四种常量定义方式:1)字面常量:直接写入代码的固定值,简单但可读性差;2)const常变量:类型安全且可调试的只读变量;3)#define宏常量:预处理阶段文本替换,无类型但配置灵活;4)enum枚举常量:增强可读性的整型常量组,适合状态管理。实际开发中应根据需求选择合适的常量类型:临时值用字面常量,类型安全需求用const,统一配置用宏定义,状态管理用枚举,以提升代码健壮性和可维护性。

qq_75228218的博客 1512

C++中enum的大小

关于枚举类型所占内存的大小,书里对枚举大小的定义是:sizeof枚举是sizeof某类可以包含枚举range的整型,并且不会大于sizeof(int)。也就是说枚举大小不一定等于sizeof(int)。  比如在一个sizeof(int)等于4的机器上,sizeof枚举有可能是1或者4,但不会是8 。 要想强制enum等于一个固定长度,就要定义一个最大的长度放入enum定义中。 比如

y020142014的专栏 3432

C++各种数据类型所占内存大小

C++各种数据类型所占内存大小

bdn_nbd的博客 6161

C语言学习之:enum枚举

枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。 enum colors { red,blue,yellow }clo; int main(void) { clo=red; printf("%d\n",clo); //0 clo=yellow; printf("%d\n",clo); //2 return 0; } 第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1

Yang_1998的博客 815

面试中关于C++中的类,结构体,enum,字符变量等所占内存空间问题总结

关于C++中类所占的内存空间总结,见bluesky的文章: http://blog.sina.com.cn/s/blog_69c189bf0100mkeu.html 另外,阿里巴巴有一道笔试题,问sizeof(a)的大小 #pragma pack(2) class A { int i; union U { char buff[13]; int i; }u; void f

sd396791336的专栏 1949

C语言学习与总结---第十一章:枚举(enum)

枚举(enum)1 枚举类型2 枚举类型变量3 枚举类型变量的初始化4 枚举的内存5 枚举的本质 1 枚举类型 所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。 声明枚举类型的一般形式为 enum 枚举类型名{ 标识符1; 标识符2 …… 标识符n; }; 例如 enum week { Mon, Tues, Wed, Thurs, Fri, Sat, Sun }; 注意: (1) 枚举型是一个集合,集合中的元素(枚举成员)是

Moonlight2020的博客 871

C/C++:枚举 enum

枚举 1、什么是枚举 枚举是一种创建常量符号的方式,相较于#define预处理,枚举更加建议。 可以理解为其为数值绑定了一个固定的名字,数值可以重复。 同时枚举还可以用来定义新类型: enum S { a, b, c, d}; ...

qq_51137086的博客 3249
下一篇: 荒野过河
bulebin
博客等级 码龄10年 152粉丝 36原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值