我应该如何数字
How should I numerate my enum?
通常,当我创建一个枚举时,他们每个人都会被一个人递增,请参见
enum
{
A = 0,
B,
C,
D
};
但是在我研究了一些源代码之后,我看到人们在做这样的事情
enum
{
A = 0,
B = 1 << 0,
C = 1 << 1,
D = 1 << 2
};
我明白这意味着什么,但是这到底给了我什么?有任何优势吗?我只看到这使我认为它看起来不确定性。
第二个形式创建用于在bitmask中使用的标志。通常是为了在具有多种布尔条件的对象中节省空间可以控制其行为。
struct foo {
std::uint32_t bitmask; // up to 32 different flags.
};
foo obj;
obj.bitmask = (B | D); // Sets the bits 0 and 2
它创建具有唯一位设置的位掩码类型,因此表达式B | C
的保证不与D
相同。
如果您只想要未合并的唯一枚举值,则第一个版本是完全可以的。而且,您实际上不必将= 0
用于第一个值。无论如何,那将是默认的。
相关文章:
- 查找最接近的大于当前数字的数字的索引
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- C++ 中 11 位数字的数字的乘积
- 编写一个程序,提示用户输入一个整数,然后输出数字的单个数字和数字的总和
- 无法在按下数字和数字键时处理Qt C++中的QKey事件
- 如何通过C 从数字列表中以3位数字生成数字
- 浮点值未显示准确数字的数字C
- 该程序如何反向打印数字的数字?
- 分开二进制数字的数字
- 接收数字和数字的算法并检查数字内部数字的次数
- C++ - 计算一系列数字的数字
- 无符号函数,用于返回使用任何数字的数字
- bignumber.h arduino如何解析大于10位数字的数字
- 字母数字到数字在 c 歧义中
- 如何在递归函数中更改数字的数字?C++
- (数字)和(-数字)的含义
- 正则表达式:仅限数字 + 字母数字 + 特殊字符
- 在 c++ 中查找最小数字 +ve 数字
- 将字符串解析为数字或数字和百分比符号
- 比较数字并查找具有相同数字的数字