gpt4 book ai didi

c++ - 基于两个 bool 变量的分支

转载 作者:太空狗 更新时间:2023-10-29 19:37:35 25 4
gpt4 key购买 nike

假设我有两个 bool 变量,我想根据它们的值做完全不同的事情。实现这一目标的最干净的方法是什么?

变体 1:

if (a && b)
{
// ...
}
else if (a && !b)
{
// ...
}
else if (!a && b)
{
// ...
}
else
{
// ...
}

变体 2:

if (a)
{
if (b)
{
// ...
}
else
{
// ...
}
}
else
{
if (b)
{
// ...
}
else
{
// ...
}
}

变体 3:

switch (a << 1 | b)
{
case 0:
// ...
break;

case 1:
// ...
break;

case 2:
// ...
break;

case 3:
// ...
break;
}

变体 4:

lut[a][b]();

void (*lut[2][2])() = {false_false, false_true, true_false, true_true};

void false_false()
{
// ...
}

void false_true()
{
// ...
}

void true_false()
{
// ...
}

void true_true()
{
// ...
}

对于普通程序员来说,变体 3 和 4 是否过于棘手/复杂?我错过了任何其他变体吗?

最佳答案

第一个变体是最清晰可读的,但可以调整:

if (a && b) {
// ...
} else if (a) { // no need to test !b here - b==true would be the first case
// ...
} else if (b) { //no need to test !a here - that would be the first case
// ...
} else { // !a&&!b - the last remaining
// ...
}

关于c++ - 基于两个 bool 变量的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6956296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com