C++ 未在C+;中的数组中默认初始化的索引范围+;

C++ 未在C+;中的数组中默认初始化的索引范围+;,c++,arrays,initialization,C++,Arrays,Initialization,下面是我试图运行的代码 #include<bits/stdc++.h> using namespace std; int main() { bool x[101010]; for(int i=0;i<101010;i++) { if(x[i]) cout<<i<<" "; } return 0; } #包括 使用名称空间std; int main() { boolx[10

下面是我试图运行的代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
    bool x[101010];
    for(int i=0;i<101010;i++)
    {
        if(x[i])
            cout<<i<<" ";
    }
    return 0;
}
#包括
使用名称空间std;
int main()
{
boolx[101010];
对于(int i=0;i
布尔类型变量的默认值为false

这里不是真的,因为

  • 如果T是
    非POD(直到C++11)
    类类型,则将考虑构造函数并根据空参数列表进行重载解析。调用所选构造函数(默认构造函数之一)以提供新对象的初始值
  • 如果T是数组类型,则数组的每个元素都默认初始化
  • 否则,什么也不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定值
x
被声明为具有自动存储持续时间的本地对象,它是一个非类类型的数组;
x
的所有元素的值都将是不确定的值

布尔类型变量的默认值为false

这里不是真的,因为

  • 如果T是
    非POD(直到C++11)
    类类型,则将考虑构造函数并根据空参数列表进行重载解析。调用所选构造函数(默认构造函数之一)以提供新对象的初始值
  • 如果T是数组类型,则数组的每个元素都默认初始化
  • 否则,什么也不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定值

x
被声明为具有自动存储持续时间的本地对象,它是一个非类类型的数组;
x
的所有元素的值都将是不确定的值。

您的问题可以归结为:

bool x;
std::cout << x;

这将递归地对数组的每个元素进行值初始化,而对
bool
进行值初始化实际上就是将其设置为
false
您的问题可以归结为:

bool x;
std::cout << x;
这将递归地对数组的每个元素进行值初始化,而对
bool
进行值初始化实际上就是将其设置为
false