【发布时间】:2018-12-18 21:29:12
【问题描述】:
我对此进行了很多搜索,但没有找到满意的答复。我正在编写一个小的数学算法来学习一些编程语言,因此,这是我的第一个 C++ 程序的一部分。但是,我似乎无法修复这个数组。尽管人们说数组中的随机值是由于数组未初始化,并且您应该将它们初始化为您想要的值,如下所示:int array[sizeOf] = {0},但它仅在此示例中起作用。如您所见,数组的所有值都设置为 0,除了最后一个,它似乎没有被初始化:是什么原因造成的,我该如何解决?
#include <iostream>
using namespace std;
int initialNumber;
int main()
{
cout << "Enter Range value:" << endl;
cin >> initialNumber; //get size
cout << "Solving..." << endl << endl;
//initialize basic ints to be used for calculations
int limiter = initialNumber/2; //the max value we will ever have to multiply by
int arraySize = initialNumber++; //size of the array
int resultingFactorsArray[arraySize] = {0}; //main array
//print each array item value
for (int x = 0; x <= arraySize; x++) {
cout << resultingFactorsArray[x] << endl; //print all array values
//all values printed should be 0, but the last one is uninitialized
}
}
【问题讨论】:
-
int resultingFactorsArray[arraySize]是一个可变长度数组,不是标准的。使用-pedantic编译会报错。 -
我会回去阅读更多关于 C++ 和数组的内容。引用 Bjarne Stroustrup 的话:“C 让你很容易射中自己的脚;C++ 让它更难,但当你这样做时,它会把你的整条腿都炸飞。”不阅读,你将继续犯严重的错误。
-
如果你得到一个超出范围的错误,你就知道你有问题了!修复错误。
-
@SojanJanso 数组从 0 索引开始。因此,如果您有一个大小为 10 的数组,则最后一个有效索引是 9,而不是 10。
-
至于为什么没有报错,见:stackoverflow.com/questions/1239938/…
标签: c++ arrays random initialization