假设我有一个 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 次p>
但是把 && 做到底是没用的,最好的就是做:
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/