【发布时间】:2016-06-30 19:56:00
【问题描述】:
为什么 C 中没有枚举的增量运算符?即使相应的整数值是用户定义的,使用++ 迭代到下一个成员对我来说确实很有意义。
为了更清楚
typedef enum myenum t_myEnum;
enum myenum {
eMember1,
eMember2
}
t_myEnum bla = eMember1;
现在我问为什么反对bla++ 产生eMember2。
用户定义对整数值的赋值,例如
enum myenum {
eMember1 = 0,
eMember2 = 10
}
在我看来不应该是一个障碍。
【问题讨论】:
-
我不明白你的问题。您希望
5++合法或类似吗? -
不,问题是要有
myEnum x = firstValue; x++; // now x = secondValue。 -
请澄清您的问题。正如 Sourav Ghosh 现已删除的答案所显示的那样,您的问题还不够清楚,无法明确。
-
这是一个公平的问题,但它询问语言设计者和标准委员会的基本原理,或者更有可能是我们对其基本原理的猜测或意见。就答案必须沉迷于猜测而不是进行分析而言,这个问题在这里是题外话。
-
这个论点的问题是你假设 ++ 一开始就有意义。它会与语言中的所有其他算术冲突,使所有算术不一致。为什么枚举上的 + 与另一种类型上的 + 相比具有特殊含义?它会在溢出时引入未定义的行为。