c - 为什么 C 中没有枚举的增量运算符?

标签 c enums operators

为什么 C 中没有枚举的增量运算符?即使相应的整数值是用户定义的,对我来说,使用 ++ 进行迭代也非常有意义。到下一个成员。

为了更清楚

typedef enum myenum t_myEnum;
enum myenum {
    eMember1,
    eMember2
}
t_myEnum bla = eMember1;

现在我问反对bla++的理由是什么?产量eMember2 .

用户定义的整数值分配,例如

enum myenum {
    eMember1 = 0,
    eMember2 = 10
}

我认为这不应该成为障碍。

最佳答案

我确信这是 C 和 C++ 的缺点。

最初,枚举被视为整数常量集,作为指令 #define 的替代方案。因此,C 中的枚举是一组此类常量的通用名称。它们尽可能简单。:)

C++ 向前迈出了一步,枚举器开始拥有枚举类型。你也可以为枚举重载运算符++,尽管我同意你的观点,最好将这些运算符内置起来。

例如,枚举可以以与 C++ 中的 std::initializer_list 类似的方式实现。

所以在我看来,这些运营商的缺席只是历史原因。

另一个缺点是无法获取枚举中定义的枚举数的数量。

关于c - 为什么 C 中没有枚举的增量运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36010226/

相关文章:

c++ - 不得删除 C++ 或 C 运算符之间的空格的示例

c - 如何修改此程序以计算非空格字符的数量?

c - 带(有符号)枚举值的按位运算

c++ - C++ 中的用户定义运算符

objective-c - 像 '1 << 0' 这样的 typedef 枚举语法是什么意思?

c# - 枚举扩展方法未显示

C++ ostream 重载不起作用

c++ - FastCGI 通过 C : FCGX_Accept_r occasionally perform "Connection reset..."

c - 长对齐问题(MSVC vs. GCC)

c - c中的插入排序,需要修正