Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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+中布尔数组的声明+;保证每个arr的大小n为0[n]? 如果在C++中声明一个布尔变量数组,像这样: bool someBooleans[MAX];_C++ - Fatal编程技术网

是C+中布尔数组的声明+;保证每个arr的大小n为0[n]? 如果在C++中声明一个布尔变量数组,像这样: bool someBooleans[MAX];

是C+中布尔数组的声明+;保证每个arr的大小n为0[n]? 如果在C++中声明一个布尔变量数组,像这样: bool someBooleans[MAX];,c++,C++,对于小于或等于最大值的每一个n,标准是否将值someBooleans[n]定义为0 还是取决于编译器 首先,指数的有效范围为0,最大值为-1 如果数组是在具有静态存储持续时间的任何函数之外定义的,则标准保证数组的所有元素都将初始化为零。 Otherwize数组的元素未初始化 您可以通过以下方式将其元素显式初始化为零(对应于false) bool someBooleans[MAX] = {}; 数组传统上是0索引的。该声明指示数组包含的元素数。因此,要检查someBooleans[i]的值,i必

对于小于或等于最大值的每一个n,标准是否将值someBooleans[n]定义为
0


还是取决于编译器

首先,指数的有效范围为
0,最大值为-1

如果数组是在具有静态存储持续时间的任何函数之外定义的,则标准保证数组的所有元素都将初始化为零。 Otherwize数组的元素未初始化

您可以通过以下方式将其元素显式初始化为零(对应于false)

bool someBooleans[MAX] = {};

数组传统上是0索引的。该声明指示数组包含的元素数。因此,要检查
someBooleans[i]
的值,
i
必须在[0,MAX]的范围内。程序也可以使用
&someBooleans[MAX]
,但在该位置读取值是错误的

如果数组具有静态持续时间(通过全局、由命名空间限定范围或指定
静态
存储类),则将其初始化为所有0,并且所包含的元素将计算为
false
。否则,将不初始化数组

要在声明为函数的局部变量时将其初始化为全部0:

bool someBooleans[MAX] = {};
若要在声明为类成员时将其初始化为所有0,可以在构造函数中使用空初始化来导致数组的默认初始化:

class Foo {
    bool someBooleans[MAX];
    Foo () : someBooleans() {}
};

你可能在C++中使用的是<>代码>:ST::vector < /COD>。它将默认为你初始化元素:

std::vector<bool> someBooleans(MAX);
std::向量someBooleans(MAX);

使用
std::vectori如果处于自动存储中,则元素未初始化为任何值,并且从中读取是未定义的行为。这是在命名空间范围的静态存储中,还是变量具有自动存储持续时间?什么是自动存储?自动存储是人们通常称之为“堆栈”的东西@Wildling,堆是不相关的。在自动存储持续时间和静态存储持续时间之间进行选择。这两个术语都是官方术语,很容易找到有关它们的更多信息。哈!在我完成回答之前,你在中编辑了聚合初始值设定项。删除了我的答案和+1:)@Billy ONeal通常我会在思考之前写下我的答案它们。:)所以我经常更新我的原始答案。@VladfromMoscow我从中了解到存储持续时间。据我所知,未声明为
static
的类的成员变量属于自动存储持续时间。对吗?@Wildling如果类的数据成员未声明为static,则其存储持续时间相同作为类的对象初始化。考虑到类可以有用户定义的构造函数,这些构造函数可以初始化类的数据成员。@VladfromMoscow是的,但为了知道数组是否为零初始化,我需要知道它是静态存储还是自动存储。在这种情况下,即当某个对象具有相同的存储时作为其对象,什么是存储类?静态还是自动?