#include <stdio.h>
enum {AA, BB, CC} s;
int main()
{
s = 4;
printf("%d\n",s);
return 0;
}
编译器不给出任何警告并打印4.场景后面发生了什么? s
是否被视为int
类型?使用整数作为枚举值
#include <stdio.h>
enum {AA, BB, CC} s;
int main()
{
s = 4;
printf("%d\n",s);
return 0;
}
编译器不给出任何警告并打印4.场景后面发生了什么? s
是否被视为int
类型?使用整数作为枚举值
枚举的具体类型是实现特定的,但它通常是int
。所以是的,在这种情况下s
可能是int
。从C规格:
每个枚举类型应与
char
,有符号整数类型,或一个无符号整数类型兼容。类型的选择是实现定义的,但应能够表示枚举的所有成员的值。枚举类型直到在终止列举程序声明列表之后才是不完整的。
所以你的情况,4肯定会工作,因为它在一个char
在我听过的任何机器上的任何符号或无符号整数类型相符。
相关http://stackoverflow.com/questions/366017/what-is-the-size-of-an-enum-in-c – Bruce 2012-02-26 06:39:37