【发布时间】:2016-08-27 19:07:47
【问题描述】:
我有一个数组,我试图声明它的所有单元格都等于 0。每次我尝试访问任何单元格时,除了第一个之外,它们总是返回 -858993460,这绝对不是 0。
这里是数组的声明:
int values[8] = { };
这是正在打印的数组单元格,它打印出 -858993460。
cout << value.values[1];
不过,这条线可以正常工作:
cout << value.values[0];
值对象的确切声明(Value是一个类):
Value value;
Value 类的声明:
#pragma once
class Value{
public:
int values[8] = { };
Value();
~Value();
};
只有第一个单元格打印 0,那么如何声明一个所有单元格都为 0 的数组?
有关任何其他信息,这里有足够的代码来重现问题(将其与 Value 的声明结合起来:
#include <iostream>
#include "Value.h"
using namespace std;
int main(){
char null;
Value value;
cout << value.values[1];
cin >> null; //this just holds up the program so I have time to read what it printed
return 0;
}
【问题讨论】:
-
minimal reproducible example 请像往常一样!
-
^是按位异或运算符;2^3 == 1. -
正如@KeithThompson 所说,您刚刚声明了一个包含1 个元素的数组,所以
int values[(2 ^ 3)] = { 0,0,0,0,0,0,0,0 };会出错。 -
@user:对于像
{ }这样的聚合初始化器,未指定的值被初始化为零。