枚举c中的关联值
我有一个枚举声明,如下所示:枚举c中的关联值,c,enums,C,Enums,我有一个枚举声明,如下所示: enum qty { cars = 10, bikes = 9, horses = 9 ... } // total 28 如何将枚举器列表的所有关联值相加 无法在C中表示“数量中的所有枚举”。无法在C中表示“数量中的所有枚举”。您无法在运行时知道C中的枚举的内容 此外,这听起来像是对枚举的滥用。您应该使用它们来定义将在代码中使用的常量,而不是存储数量或类似的东西,否则它们应该是可变的:枚举值是不可变的。为此使用整数数组;您可以循环执行这些操作。您无法在运行时知道
enum qty { cars = 10, bikes = 9, horses = 9 ... } // total 28
如何将枚举器列表的所有关联值相加 无法在C中表示“数量中的所有枚举”。无法在C中表示“数量中的所有枚举”。您无法在运行时知道C中的
枚举的内容
此外,这听起来像是对枚举的滥用。您应该使用它们来定义将在代码中使用的常量,而不是存储数量或类似的东西,否则它们应该是可变的:枚举值是不可变的。为此使用整数数组;您可以循环执行这些操作。您无法在运行时知道C中枚举的内容
此外,这听起来像是对枚举的滥用。您应该使用它们来定义将在代码中使用的常量,而不是存储数量或类似的东西,否则它们应该是可变的:枚举值是不可变的。为此使用整数数组;您可以循环使用它们。在C语言中无法循环使用它们(您可以在Ada;-)因此,您只能执行以下操作:
int sum = cars + bikes + horses + ...;
但正如zneak和Tyler所说,您可能没有使用正确的构造。在C中无法循环通过它们(您可以在Ada中;-),所以您只能这样做:
int sum = cars + bikes + horses + ...;
但正如zneak和Tyler所说,您可能没有使用正确的构造。在C中,枚举只是映射到整数。它们甚至不是类型安全的,因为您可以在用于其他枚举的位置自由替换一个枚举的成员。在C中,枚举只映射到整数。它们甚至不是类型安全的,因为您可以在用于其他枚举的位置自由替换一个枚举的成员。如果您有大量的成员需要保持同步,那么一些预处理器滥用可能会派上用场:
#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)
};
如果要保持同步的信息非常多,那么一些预处理器滥用可能会派上用场:
#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)
};
我不认为你真的理解枚举的用途。看起来您试图(错误地)使用它们来替代关联数组或结构。此外,可执行代码不保留枚举的名称。如果要在enum
值和名称之间进行转换,则必须使用表。我认为您并不真正理解enum的用途。看起来您试图(错误地)使用它们来替代关联数组或结构。此外,可执行代码不保留枚举的名称。如果要在enum
值和名称之间转换,则必须使用表。