作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
用 gcc C99 编译
我使用枚举已有一段时间了。但是,我正在使用一些示例代码来开发我的应用程序。我遇到了一些这样的代码。我被告知这是使用枚举时的最佳实践。但我看不出这有什么好处。
typedef enum {
TYPE_DATE,
TYPE_TIME,
TYPE_MONEY,
TYPE_COUNT,
TYPE_UNKNOWN = TYPE_COUNT
} string_type_e;
为什么要有 TYPE_COUNT
,为什么要将 TYPE_COUNT
分配给 TYPE_UNKNOWN
?
非常感谢您的任何建议,
最佳答案
默认情况下,枚举由编译器自动赋予从 0 开始的整数值。所以日期将为零,时间为一,金钱为二。下一个值赋予“伪”枚举值 TYPE_COUNT
,这将得到值 3,这恰好是“正确”枚举值的数量。
TYPE_UNKNOWN
是另一个表示不是“正确”值的值,因此将无法通过测试 e < TYPE_COUNT
.等于TYPE_COUNT
意味着每个不同的有意义的值都是连续的,但我不知道这有什么显着的优势(如果 TYPE_COUNT
小于 2 的幂,这可能会影响编译器可以使用的表示形式,以及它的“很好”让值连续,但这并不重要,因为无论如何你都不会增加它们超过 TYPE_COUNT
)
关于c - typedef 枚举,在其中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/694812/
我是一名优秀的程序员,十分优秀!