布尔A、B和C真值组合 我需要结合3个布尔值来测试C++中的所有真值表(8个组合)。
我有两个需要注意的特殊情况,它们是a,b和c都是真的,a,b是真的,但c是假的 其余的不需要特别照顾(它们将自动协同工作,无需具体案例说明) 有没有办法只测试这两种情况,然后测试个别情况,但仍然允许个人一起工作 比如, 如果(a&b&c) 如果(a&&b&&c) 那么如果分别是a,b,c 我认为它使用if-else,但我运气不好,我现在用的方法执行一些运算,两倍于“a”在ab中是正确的c,ab!c和a布尔A、B和C真值组合 我需要结合3个布尔值来测试C++中的所有真值表(8个组合)。,c++,boolean,truthtable,C++,Boolean,Truthtable,我有两个需要注意的特殊情况,它们是a,b和c都是真的,a,b是真的,但c是假的 其余的不需要特别照顾(它们将自动协同工作,无需具体案例说明) 有没有办法只测试这两种情况,然后测试个别情况,但仍然允许个人一起工作 比如, 如果(a&b&c) 如果(a&&b&&c) 那么如果分别是a,b,c 我认为它使用if-else,但我运气不好,我现在用的方法执行一些运算,两倍于“a”在ab中是正确的c,ab!c和a 我希望这足够清楚,我第一次在这里发帖,如果不清楚,我深表歉意。您的两个特殊情况可以处理如下:
我希望这足够清楚,我第一次在这里发帖,如果不清楚,我深表歉意。您的两个特殊情况可以处理如下:
if (a && b)
if (c)
all_true();
else
ab_true_c_false();
另一种可能是将这三种方法进行算术组合,然后将结果用作索引:
typedef void (*action)();
// handlers for the individual cases:
void all_false() { std::cout << "all_false"; }
void a_true() { std::cout << "a true"; }
// ...
// table of handlers. The order of handlers in the array is critical.
static const action actions[] = {
all_false, a_true, b_true, ab_true,
c_true, ac_true, bc_true, abc_true };
// Create index into array
int x = a | (b << 1) | (c << 2);
// invoke correct handler:
actions[x]();
typedef void(*action)();
//个案处理人:
void all_false(){std::cout谢谢你的回答,然后我如何分别测试其他3种情况,而不重复这些过程(a、b和c都是“如果为真,那么就这样做”)@quantumspade:如果需要,该表可以在多个位置包含指向同一函数的指针。