比如
enum XX{
A,
B,
C
}a
那么
enum e = A;
int b = e;
和
int c[10];
enum e = A;
c[e] = 1;
这两种用法对么?
我用pclint检查代码时,发现是error。
...全文
4734打赏收藏
C语言enum与int的区别
《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。
编译器有关的,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++标准,编译器很多不支持的)