在C++中创建三个bool值的整数作为位

tzi*_*ppy 12 c c++ boolean

我有bool三个代表位的值.我想在表单中有一个整数

true true true = 7
false true false = 2
Run Code Online (Sandbox Code Playgroud)

我有

int val = 4*boolVal1 + 2*boolVal2 + boolVal3;
Run Code Online (Sandbox Code Playgroud)

还有另一种方式,甚至可能更简单吗?

Mar*_*ers 27

您可能会发现使用按位运算符而不是乘法和加法更清楚:

int val = (boolVal1 << 2) | (boolVal2 << 1) | boolVal3; 
Run Code Online (Sandbox Code Playgroud)


Iva*_*iev 5

或者你可以使用Horner的方法:

int val = (((boolVal1 << 1) | boolVal2) << 1) | boolVal3.

这也使得从语句中间添加或删除变量更容易,而不必更改所有其他系数.

但是,这对读者来说可能不太明显.