我想用非常数步骤定义枚举。我希望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
}
有没有办法定义它,如上例所示?
答案 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