初始化期间程序未与 Array 一起运行

Posted

技术标签:

【中文标题】初始化期间程序未与 Array 一起运行【英文标题】:Program not running with Array during Initialization 【发布时间】:2018-06-27 01:06:03 【问题描述】:

我只是在练习使用数组。所以我的程序包括将数据类型的数字输入到数组中并打印出来。很简单。

我只将数字限制为 4。所以数组 num_List[3] 在代码中。我确保正确使用 for 循环来读取和打印结果。

前几次我测试了代码。我意识到数组中的第四个数字是科学计数法,告诉我我忘记将array 初始化为0,在本例中为0.0,因为我使用的是double。所以我输入了这段代码。

for (index = 0; index <= 3; index++)
    num_List[index] = 0.0;

这段代码应该已经将num_List 的数组初始化为0.0。但是,当我对此进行测试时,在我输入了 4 个数字后,什么都没有出现。所以我在这里犯了一个逻辑错误,或者是 for 循环的其他原因导致它被困而不继续执行。

我在书中读到了这种特殊的初始化方式。

#include <iostream>
using namespace std;

int main() 
double num_List[3]; // These are my variables
int index;
//double num; // Ignore these two for now, for they are to be modified later on.
//double result;

cout << "This program will summarize the numbers you've inputted print out the result. \n";
cout << "And also print out the address of the 1st and 4th address in the array." << endl;
cout << "Please enter the four numbers to be summarized.";

for (index = 0; index <= 3; index++)  // I put this in after I realized my mistake of not initializing my arrays to 0.0.
    num_List[index] = 0.0; // This is where the problem is, I think. 

for (index = 0; index <= 3; index++) // This reads in the user the input
    cin >> num_List[index];

cout << "The numbers you have inputted is:\n";

for (index = 0; index <= 3; index++) // This prints out the array.
    cout << num_List[index] << ", " << endl;

return 0;

如果您专注于上述代码并尝试编译它,您会发现我的代码在您输入 4 个数字后不会继续从那里继续,无论是否输入数字并将其空格4 个数字,或输入一个数字,按这些数字的输入键。很可能我犯了一个明显的错误,但我看不出来。

我使用代码块,因此与我用来练习代码的 Bloodshed C++ 编译器相比,情况有些不同。

【问题讨论】:

根据你说的:“我只将数字限制为4”,你能检查你的num_List数组中有多少元素吗? 数组通常是这样的 0 - n-1。所以我有 numList[4],我发现导致它的原因是 for 循环中的等号导致了未定义的行为,所以我不得不将 for 循环上的代码更改为:(index = 0; index 【参考方案1】:
double num_List[3];

这声明了一个包含 3 个元素的数组,索引从 0 到 2。

for (index = 0; index <= 3; index++)

这会循环 4 个索引,从 0 到 3。当你用num_List[3] 做某事时,你会得到未定义的行为。在您的试验中,幸运的是,未定义的行为只导致了一些垃圾输出。

【讨论】:

是的,它刚刚击中了我,我已经修复了那部分的代码。我需要去掉 = 符号,然后将数字增加到 4。这暂时解决了问题。

以上是关于初始化期间程序未与 Array 一起运行的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 着色器未与制服一起运行

在静态初始化期间运行代码

Maven 未与 Java 10 一起运行:Files\Java\jdk-10""=="" 此时出乎意料 [重复]

AdMob 广告未与 MobFox SDK 在签名的 APK 中一起显示

在 C++ 中的数组初始化期间使用数组成员 [重复]

如何在 MACOS 上将 Java 从 9 降级到 8。 Eclipse 未与 Java 9 一起运行