布尔A、B和C真值组合 我需要结合3个布尔值来测试C++中的所有真值表(8个组合)。

布尔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 我希望这足够清楚,我第一次在这里发帖,如果不清楚,我深表歉意。您的两个特殊情况可以处理如下:

我有两个需要注意的特殊情况,它们是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:如果需要,该表可以在多个位置包含指向同一函数的指针。