c++ - 在一个语句中比较 bool 变量,只要数组 C++

标签 c++ c++11 boolean-logic

假设我有一个 bool 数组,其中 5 个 bool 变量都为真

bool boo[10];
for(int i = 0; i < 5; i++){
    boo[i] = true;
}

我希望一次将它们全部比较到一个 NAND 逻辑门中,因为我的问题是我是否总是比较两个变量并将合并的 bool 值与 i+1 bool 变量进行比较。这给出了错误的结果。

    bool NANDGate(bool array[]){
    bool at;
    for(int i = 1; i < 5; i++){
        if(i == 1){
            at = !(array[i-1] && array[i]);
        }else{
            at = !(at && array[i]);
        }
    }
    return at;
}
// result here is true even though it should be false

当我将 boo 中的每个变量放入与非门时,我想要的是一个正确的结果,所以可能看起来像这样:

bool func(bool array[]){
// some loop
result = !(array[0] && array[1] && array[2] && array[3] && array[4]);
return result;
}
// result here would be false

实际上,它不必看起来像那样,也许是一个具有上述正确结果的解决方案。

编辑:有这么多很棒的解决方案,谢谢大家

最佳答案

将您的定义替换为:

 bool NANDGate(bool array[]){
   bool at = array[0];
   for(int i = 1; i < 5; i++){
     at &&= array[i];
   }
   return !at;
 } 

not (!) 必须放在最后才能兼容 !(array[0] && array[1] && array[2] && array[3] &&数组[4]);

在您的定义中,您还考虑了一些条目 2 次

但是把 && 做到底是没用的,最好的就是做:

 bool NANDGate(bool array[]){
   for(int i = 0; i < 5; i++){
     if (!array[i])
       return true;
   }
   return false;
 } 

关于c++ - 在一个语句中比较 bool 变量,只要数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54132855/

相关文章:

c++ - 数组 : Storing Objects or References

c++ - 基类和派生类的复制构造函数

c++ - 将非算术类型作为参数传递给 cmath 函数是否有效?

c# - 这个 if-else-else 逻辑可以重写成更简洁的东西吗?

c++ - 为自制操作码列表创建 C++ 编译器/链接器

c++ - Boost三次Hermite插值 "requires template argument list"

c++ - NRVO。关闭省略。 C++11 与 C++17

c++ - gcc 4.8 中静态 constexpr 成员数组的初始化

Javascript:比较三个 bool 值并返回所有真 bool 值

java - 为什么这会返回 true true 而不会堆栈溢出?