如何定义枚举增量步骤?

时间:2013-01-15 17:19:28

标签: c enums

我想用非常数步骤定义枚举。我希望2个枚举变量之间的步骤如下:

enum test {
   a1 = 1,
   a2 = 1<<2,
   a3 = 1<<3,
   a4, // a4 deduced automatically as 1<<4
   a5 // a5 deduced automatically as 1<<5
}

有没有办法定义它,如上例所示?

1 个答案:

答案 0 :(得分:1)

如果枚举成员没有任何指定,

  • 然后第一个枚举成员将考虑零。

  • 对于其他成员,只需添加一个成员即可使用上一个成员的值 在它上面。

您的程序分配(=)中的更多操作符未在枚举定义中使用。它应该如下所示。

#include <stdio.h>
enum test 
{
   a1 = 1,
   a2 = 1<<2,
   a3 = 1<<3,
   a4, // a4 deduced automatically as 1<<4
   a5 // a5 deduced automatically as 1<<5
};

void main()
{
   printf("%d, %d", a4, a5);
}

输出

9, 10