C 中的枚举迭代

Enum iteration in C

我正在用 C 编程,我有某种枚举,假设有一个枚举名称 hello,它里面有 3 个属性 - A、B 和 C。

如何让 A 等于 0,B 等于 2,C 等于 3,而不是每个值简单地递增 1?

提前致谢!

就这样做

enum X
{
    A = 0,
    B = A + 2,
    C = B + 2
};

如果你想每次加2或者你只想第一次做

enum X
{
    A = 0,
    B = A + 2,
    C = B + 1
};

请注意,第一个将自动 0,因此不需要 A = 0 它在我的回答中只是为了明确说明 A == 0,在第二种情况下,因为默认增量将是 1 也没有必要写 C = B + 1,如果你将它应用到代码中,它看起来像

enum X
{
    A,
    B = A + 2,
    C
};

你当然可以为每个 enum 赋值,比如

enum X
{
    A = 0,
    B = 2,
    C = 3,
};

C 允许您使用常量表达式来定义 enum 值。由于在表达式中使用 enum 值和数字常量会生成常量表达式,因此您可以这样做:

enum hello {
    A // You can assign zero explicitly, or let the compiler do it for you
,   B = A + 2
,   C // Again, you can assign B+1, or let the compiler do it for you
};

你可以试试这个。

enum X
{
  A = 0,
  B = A + 2,
  C = B + 1
};

否则你可以不分配就离开

enum X
{
  A,
  B = A + 2,
  C
};

虽然给A是自动将值0赋值给A。之后我们赋值2。然后枚举将分配前一个值的增量。所以 C 为值 3.