Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
枚举c中的关联值_C_Enums - Fatal编程技术网

枚举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
值和名称之间转换,则必须使用表。