#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 规范:
Each enumerated type shall be compatible with char
, a signed integer type, or an unsigned integer type. The choice of type is implementation-defined, but shall be capable of representing the values of all the members of the enumeration. The enumerated type is incomplete until after the }
that terminates the list of enumerator declarations.
因此在您的情况下,4 肯定会起作用,因为它适合 char
以及我听说过的任何机器上的任何有符号或无符号整数类型。
我是一名优秀的程序员,十分优秀!