枚举常量占不占内存?

NowCan 2002-01-25 12:45:17
enum
{
MON,
TUE,
WED,
...
};

请问MON,TUE这些占不占内存?

...全文
989 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowCan 2002-01-28
  • 打赏
  • 举报
回复
明白了
1fei 2002-01-25
  • 打赏
  • 举报
回复
你这是类型定义,当然不占.
但在程序中这个类型根据编绎器分配内存,
在BCB中根据情况分配内存,有可能是1,2,4个字节
在VC中是4个字节
zhp_dean 2002-01-25
  • 打赏
  • 举报
回复
请renli21(pat)说说为什么不占呢?
谢谢!!! 
renli21 2002-01-25
  • 打赏
  • 举报
回复
不占。
mage_ningxia 2002-01-25
  • 打赏
  • 举报
回复
kao,有没有这样问问题的人,只要是数据就需要内存!
echolover 2002-01-25
  • 打赏
  • 举报
回复
我是说这样试一下:
class try
{
int a;
enum{MON,TUE,WED};
}
int main()
{
cout << sizeof(try) << endl;
return 0;
}
当然了,这并不能说明枚举类型不占内存,只能说明对于类try的对象占用内存为4bytes(inta)
但是,你看thinking in c++里面说了枚举变量编译时期常量,编译器不为其分配内存。

Wind_LQ 2002-01-25
  • 打赏
  • 举报
回复
枚举是编译期的,编译的时候会转换成相应的整型数
NowCan 2002-01-25
  • 打赏
  • 举报
回复
echolover(盈子) 用sizeof(MON)应该是多少?
echolover 2002-01-25
  • 打赏
  • 举报
回复
不占内存,被认为是编译时期常量,放在符号表中。编译器不会为它分配内存。p.s.用sizeof试一下。
AixBall 2002-01-25
  • 打赏
  • 举报
回复
int n;
请问int占不占内存? 那n呢?
如果你能回答这个问题,就不要再问了.
yczs 2002-01-25
  • 打赏
  • 举报
回复
枚举变量是要分配内存的
cmoth 2002-01-25
  • 打赏
  • 举报
回复
变量定义如:int i;在32为系统中会占4字节内存的。
cmoth 2002-01-25
  • 打赏
  • 举报
回复
编译时会把枚举类型用实际数值替换,比如程序中所有出现MON的地方都被替换为1,至于定义:
enum
{
MON,
TUE,
WED,
...
};

是不占内存的,和变量不一样。
test09test 2002-01-25
  • 打赏
  • 举报
回复
类型定义不占内存!!!!!
leizhengdeng 2002-01-25
  • 打赏
  • 举报
回复
就是类型不占内存,变量占内存
typedef struct
{
int a;
char b[5];
} X;

X x;

X不占内存,x占内存(具体在哪里分配就看这句话在哪里定义了)
tief 2002-01-25
  • 打赏
  • 举报
回复
枚举事实上是定义了特殊的整数,而这个整数类型有固定的取值范围,编译器会依照这个规则来进行枚举值的限制。在VC中枚举类型占4个字节,只有建立(声明)一个枚举变量才会真正的分配内存,如:


enum color {red,green} ; // red=0,green=1


color mycolor = red ; //此时分配内存(栈)

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧