C 程序中枚举的使用

发布于 2024-11-02 11:53:05 字数 134 浏览 0 评论 0原文

对于代码:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

音栖息无 2024-11-09 11:53:05

输出为 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 节):

枚举器列表中的标识符被声明为 int 类型的常量,并且可以出现在任何允许的地方。带有 = 的枚举器将其枚举常量定义为常量表达式的值。如果第一个枚举数没有 =,则其枚举常量值为 0。后续每个没有 = 的枚举数都将其枚举常量定义为通过以下方式获得的常量表达式的值:前一个枚举常量的值加 1。使用带有 = 的枚举器可能会生成具有与同一枚举中的其他值重复的值的枚举常量。

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, and MAX is 2.

FYI: an enum is like a bunch of #defines, 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):

The identifiers in an enumerator list are declared as constants that have type int and may appear wherever such are permitted. An enumerator with = defines its enumeration constant as the value of the constant expression. If the first enumerator has no =, the value of its enumeration constant is 0. Each subsequent enumerator with no = defines its enumeration constant as the value of the constant expression obtained by adding 1 to the value of the previous enumeration constant. The use of enumerators with = may produce enumeration constants with values that duplicate other values in the same enumeration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文