枚举用于C程序

Mou*_*Das -4 c enums

对于代码:

void main()
{
   enum a{a,b ,MAX};
   printf("%d",MAX);
}
Run Code Online (Sandbox Code Playgroud)

为什么输出2在这种情况下?

Raf*_*ler 5

输出为2,因为MAX为2.枚举用于创建常量的名称.在C中,如果未在枚举中明确指定项目的值,则该值为0(如果它是第一个项目,或者大于前一个项目的值).因此,在这种情况下:a是0,b是1,MAX是2.

仅供参考:枚举就像一堆#defines,除了值不需要是常数.假设您使用GNU C,请参阅GNU C手册中有关枚举的条目.

就分配给标识符的值而言,C99标准可以这样说(部分6.7.2.2/3):

枚举器列表中的标识符声明为具有int类型的常量,并且可以出现在允许的位置.枚举器=将其枚举常量定义为常量表达式的值.如果第一个枚举器没有=,则其枚举常量的值为0.每个后续的枚举器都没有=将其枚举常量定义为通过将1加到前一个枚举常量的值而得到的常量表达式的值.枚举器的使用=可能会产生枚举常量,其值与同一枚举中的其他值重复.