【发布时间】:2014-02-16 00:53:43
【问题描述】:
这是我将用来获取一组三个布尔值并将其转换为 int 以用于 switch 语句的代码:
int bits = 0;
bool a = true, b = false, c = true; // 101 = 5
bits = bits | a << 2;
bits = bits | b << 1;
bits = bits | c;
cout << bits;
根据这三个布尔值的组合状态,我有八种情况。我这样做对吗?
是的,不是语法意义上的,但如果有任何问题,请提出建议。更准确地说是“这是解决这个问题的最佳方法吗?”
【问题讨论】:
-
你是指 C 还是 C++?在大多数情况下,它会有所不同。
-
在处理多个运算符时,为了优先级清晰,我总是添加括号:
bits = bits | (a << 2);也就是说,我不确定在 C++ 中如何处理 bool 对象的移位。可能需要将a和b转换为(int)。
标签: c++ bit-manipulation