#include <stdio.h>
enum {AA, BB, CC} s;
int main()
{
s = 4;
printf("%d\n",s);
return 0;
}
编译器不会发出任何警告并打印4.场景背后发生了什么? s
被视为int
类型吗?
答案 0 :(得分:3)
枚举的特定类型是特定于实现的,但通常是int
。所以是的,在这种情况下,s
可能是int
。来自C规范:
每个枚举类型应与
char
,有符号整数类型或无符号整数类型兼容。类型的选择是实现定义的,但应能够表示枚举的所有成员的值。枚举类型在}
终止枚举器声明列表之前是不完整的。
所以在你的情况下,4肯定会起作用,因为它适合char
以及我听过的任何机器上的任何有符号或无符号整数类型。