C 程序中枚举的使用
对于代码:
void main()
{
enum a{a,b ,MAX};
printf("%d",MAX);
}
为什么在这种情况下输出是 2
?
For the code:
void main()
{
enum a{a,b ,MAX};
printf("%d",MAX);
}
Why is the output 2
in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
输出为 2,因为 MAX 为 2。枚举用于为常量创建名称。在 C 中,如果您没有显式指定枚举中某项的值,则如果它是第一项,则该值为 0;对于后续项,该值为 0。因此,在本例中:
a
为 0,b
为 1,MAX
为 2。仅供参考:枚举就像一堆 < code>#define,但值不需要是常量。请参阅GNU C 手册中有关枚举的条目< /a>,假设您使用 GNU C。就
分配给标识符的值而言,C99 标准有这样的规定(
6.7.2.2/3
节):The output is 2 because MAX is 2. The enum is used to create names for constants. In C, if you don't explicitly specify a value for an item in the enum, the value is 0 if it's the first item, or one greater than the previous for subsequent items. So, in this case:
a
is 0,b
is 1, andMAX
is 2.FYI: an enum is like a bunch of
#define
s, except the values do not need to be constants. See the entry on enumerations in the GNU C manual, assuming you use GNU C.In terms of the values assigned to the identifiers, the C99 standard has this to say (section
6.7.2.2/3
):