我有一个枚举声明:
enum qty { cars = 10, bikes = 9, horses = 9 ... } // total 28
如何将枚举器列表的所有关联值相加?
答案 0 :(得分:5)
您无法在运行时知道C中的enum
的内容。
此外,这听起来像是滥用枚举。您应该使用它们来定义您将在代码中使用的常量,而不是存储数量或其他应该变量的数据:枚举值是不可变的。为此目的使用整数数组;你可以循环使用这些。
答案 1 :(得分:3)
无法在C中表达“对于所有qum中的枚举”。
答案 2 :(得分:1)
没有办法在C中循环它们(你可以在Ada ;-)所以这就是你所能做的:
int sum = cars + bikes + horses + ...;
但是像zneak和Tyler所说,你可能没有使用正确的结构。
答案 3 :(得分:1)
在C中,枚举只是映射到整数。它们甚至不是类型安全的,因为你可以在其他枚举的地方自由地替换一个枚举的成员。
答案 4 :(得分:0)
如果你有很多这些要保持同步,那么一些预处理器滥用可能会派上用场:
#define SUM(name, count) + (count)
#define DEF(name, count) name = (count),
enum qty
{
# define QTY(f) \
f(cars, 10) \
f(bikes, 9) \
f(horses, 9)
QTY(DEF)
total = 0 + QTY(SUM)
};