C语言enum与int的区别

tonywarm 2011-12-10 10:23:39
《C语言程序设计》指出enum符和int是等价的,可以理解为两者无差别么?

比如
enum XX{
A,
B,
C
}a
那么
enum e = A;
int b = e;

int c[10];
enum e = A;
c[e] = 1;

这两种用法对么?
我用pclint检查代码时,发现是error。
...全文
473 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
x90386 2011-12-10
  • 打赏
  • 举报
回复
可以,lint检查比较严格。
C++标准里貌似有1<= sizeof(enmu)<=sizeof(int)
C就不记得了……
qq120848369 2011-12-10
  • 打赏
  • 举报
回复
可以用.默认A=0,B=1,C=2.
柯本 2011-12-10
  • 打赏
  • 举报
回复
编译器有关的,enum在编译器实现时不一定与int等价
如CB有一选项
Make enums integer-sized (-b- makes them short as possible)
它可能是short的
一般的编译器
enum e = A;
int b = e; //OK
int c[10];
enum e = A;
c[e] = 1; //OK
但这样就可能不可以
enum e=1; //ERROR ,“=” : 无法从“int”转换为“XX”VS2003
所以,书只能作参考,具体要看编译器的测试结果
(即使是ISO/IEC C/C++标准,编译器很多不支持的)



wizard_tiger 2011-12-10
  • 打赏
  • 举报
回复
这个应该可以的啊!
可能是你的编译器检查比较严格。

69,371

社区成员

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

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