c++ - C ++初始化数组最后一个值是随机的
问题描述
我对此进行了很多搜索,但没有找到任何满意的答复。我正在编写一个小的数学算法来学习一些编程语言,因此,这是我的第一个 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
}
}
解决方案
数组是基于 0 的。意思是,在您的for
循环中for (int x = 0; x <= arraySize; x++)
,该部分x <= arraySize
应该是x < arraySize
.
一个例子:
如果您声明数组大小10
,则有效的数组索引为0,1,2,3,4,5,6,7,8,9
(10 个总索引)。
如果您将其放入for
循环中x <= 10
,则您的最后一个索引将是array[10]
(未定义/未初始化)。
简而言之,您的初始化是正确的,只是您的for
循环超出了范围。
推荐阅读
- macos - ssh 公证失败:不允许用户交互
- c# - DataGridView 中第二个单词的自动完成
- css - “text-align-last: justify”不适用于 wkhtmltopdf 生成的 pdf
- php - CSV 文件中的匈牙利语/保加利亚语字符最终在 PHP 中出现乱码
- ios - iOS 快捷方式上的地理定位 API 处理
- python - 从列表中的元组中提取带有NN标签的单词
- cmake - CMake 编译器独立标志
- docker - 将日志从 docker 容器保存到 windows 文件系统
- bash - bash 调用正在创建一个新进程。我想在同一进程中执行下一个命令
- javascript - StreamSets 我可以在一些脚本进程(如 JavaScript 进程)中读取运行时值吗?