使用整数作为枚举值

时间:2012-02-26 06:25:32

标签: c

#include <stdio.h>

enum {AA, BB, CC} s;

int main()
{
s = 4;
printf("%d\n",s);
return 0;
}

编译器不会发出任何警告并打印4.场景背后发生了什么? s被视为int类型吗?

1 个答案:

答案 0 :(得分:3)

枚举的特定类型是特定于实现的,但通常是int。所以是的,在这种情况下,s可能是int。来自C规范:

  

每个枚举类型应与 char ,有符号整数类型或无符号整数类型兼容。类型的选择是实现定义的,但应能够表示枚举的所有成员的值。枚举类型在 } 终止枚举器声明列表之前是不完整的。

所以在你的情况下,4肯定会起作用,因为它适合char以及我听过的任何机器上的任何有符号或无符号整数类型。