【发布时间】:2014-02-20 14:23:45
【问题描述】:
我是 C 语言的新手。我发现了一个问题,要求在 C 语言中查找枚举数的值。确切的问题写在下面:
考虑下面的 C 语言声明
enum numbers {one = 5, two = -6, three, four};
请帮我在这些枚举数中找到“四”的值。另外请告诉我这个枚举声明是如何工作的?
【问题讨论】:
-
您可以轻松测试它。
-
代码作者写这篇文章的意思是他们不关心只要它是唯一的值会是什么。你也不应该。
-
@MarounMaroun 好吧,说句公道话,尽管这对测试来说微不足道,但单独测试确实揭示了每个兼容的 C 编译器是否保证每次结果都相同。
-
@keshlam 代码确实存在,它依赖于为简洁分配连续的
enum值的“递增”行为,即使确切的值确实很重要。在某些情况下,这可以说是不好的风格,但在我看来,这个问题是有道理的。 -
@keshlam:在枚举中列出没有值的标识符既不意味着它的值将是唯一的,也不意味着作者不关心它的值。规则是每个没有
=的标识符都被赋予一个比前一个标识符大一的值,而不管是否已经存在另一个具有相同值的标识符。这通常用于设置所需间隔的第一个标识符,然后列出剩余的标识符,如enum foo { ten = 10, eleven, twelve, thirteen }。