Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何检查布尔数组中的所有值是否为真?_C_Arrays_Boolean - Fatal编程技术网

C 如何检查布尔数组中的所有值是否为真?

C 如何检查布尔数组中的所有值是否为真?,c,arrays,boolean,C,Arrays,Boolean,在C中, 检查布尔表中所有值是否为真的最佳和最简单的方法是什么? 我试过这样的东西,但没用 for(i = 0; i < value; i++){ if(bool_table[i] == 0) table_true = 0; else table_true = 1; } (i=0;i

C中, 检查布尔表中所有值是否为真的最佳和最简单的方法是什么? 我试过这样的东西,但没用

for(i = 0; i < value; i++){
            if(bool_table[i] == 0)
                table_true = 0;
            else
                table_true = 1;
    }
(i=0;i{ if(布尔_表[i]==0) 表_真=0; 其他的 表_真=1; }
此代码的问题在于,有时如果第一个值为true,则它将设置
table_true=1

类似的内容应该可以实现以下目的:

table_true = 1;
for(i = 0; i < value; i++)
        if (!bool_table[i]) {
            table_true = 0;
            break;
        }
表_true=1;
对于(i=0;i
如果以下循环遍历整个数组而未找到
false
条目,则在循环结束时
i
将等于

for(i = 0; i < value; i++)
    if ( !bool_table[i] )
        break;

table_true = (i == value);
(i=0;i if(!bool_表[i]) 打破 表_true=(i==值);
我不确定如何评价“最佳”或“最简单”。最佳是指最快吗?还是至少一行代码?最简单的是,这对初学者来说是最简单的吗?或者对于一组经常吃C和睡C并使用指针的开发人员来说

以下是我的一些非常规方法:

bool *each = bool_table; // pointer to first element
bool *end = each + value; // stop condition
while (*each && each != end) {
    each++;
}
return each != end;

“然后它将设置
table_true=1
”这怎么可能?如果(bool_table[I]==0){table_true=0;break;},我会写
,只是为了效率。如何初始化
table_true
变量?确保给出一个初始值,否则最终会得到一个未实现的值,但为了更有效地代替条件,您可以在循环中使用
table\u true&=bool\u table[i]
。此外,您还可以在发现
false
元素后立即从循环中中断
,因为检查后续元素无法更改结果。哦,亲爱的。你的编辑让事情变得更糟。之前的评论是基于你问题的原始版本,这是一个更好的开始。您现在拥有的将始终为您提供
bool_table[value-1]
的值。基于此,我建议您不要在严肃的软件中使用该算法。尽管它确实做到了这一点,但它有点迟钝,而且比实际情况更难理解。
int table[3]={1,1,1,1,1,1,1};int n,t=0;对于(n=0;n<3;n++){if(!table[n])break;else t=(n==3);}printf(“%d”,t)
@WhizzMirray注意,
n==3
在循环中永远不会为真。如果将
value
重命名为
book\u table\u len
,则此代码更容易理解。