考虑 int num
的 const 声明:
int main() {
bool a = true, b = false;
// ...
const int num = a ? (b? 2 : 4) : 4;
std::cout << num;
}
我想要的是 const int num
遵循这个真值表(我很抱歉已经根据我原来的问题进行了编辑以反射(reflect)我程序中的模式):
b
a true false
true 2 4
false 4 2
如何修改上面的 const int num
声明以使用三元运算符实现此目的?我知道如何使用 lambda 函数和嵌套的 if 语句或 lambda 函数内的 switch 语句将这样的 num
声明为 const,但我只是想知道如何使用三元运算符来实现。作为奖励,如果要使用 3 个或更多这样的 bool 值(真值表中没有特定模式)怎么办?
最佳答案
const int num = a ? (b? 2 : 3) : (b? 4: 5);
编辑:
As a bonus, what if 3 or more such bool values were to be used?
我根本不会使用这样的语法。 我会将我的表声明为
int truthTable[2][2]..[2] = {{..},...{..}}
现在只需:
int res = truthTable[!true][!false]..[!true]
!true
会变成 0
, !false
会变成 1
, 那么正确的值就是从阵列中拉出。
关于c++ - 如何在一行中使用三元运算符来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31100910/