C 中未初始化的布尔数组的默认值是多少?

What is the default value of an uninitialized boolean array, in C?

我有类似的东西,

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int t,answer;
    bool count;
    long long int L;
    scanf("%d",&t);
    while(t>0)
    {
        answer = 0;
        scanf(" %lld",&L);
        bool count[L];
  //  .....restofthecode. NDA Constraint.

arr[x] 的所有元素的默认值是多少? 是false总是吗?还是true?或者任何随机值?

根据您的代码,在本地范围内

boolean arr[x];

本身无效。 x 未初始化使用。

仅供参考,在全局 [file] 范围内,所有变量都被初始化为 0。在本地范围内,它们只包含垃圾,除非明确初始化。


编辑:

[编辑后] arr 数组中的所有变量都将具有垃圾值。它在局部范围内 [auto].

C 中没有名为 boolean 的类型,但有 _Bool,在 stdbool.h 中有一个扩展为 _Bool 的宏 bool

#include <stdbool.h>

#define X 42
bool arr[X];
如果在文件范围内声明,

arr 元素的初始值为 false(即 0),如果在块范围内声明,则为不确定。

在块范围内,使用初始化器来避免元素的不确定值:

void foo(void)
{
     bool arr[X] = {false};  // initialize all elements to `false`
}

编辑:

现在的问题略有不同:

long long int x;
scanf("%lld",&x);
bool arr[x];

这意味着arr是一个变长数组。 VLA 只能具有块作用域,因此与块作用域中的任何对象一样,这意味着数组元素具有不确定的值。您不能在声明时初始化 VLA。您可以为数组元素赋值,例如使用 = 运算符或使用 memset 函数。