找不到无限循环发生的位置
Can't find where infinite loop occurs
我正在制作一个程序,用户输入30天的股票价格,该计划找到最低和最高的价格。
用户输入数据后,程序将无法继续。
double highest = stockPrices[0];
double lowest = stockPrices[0];
for(int j = 0; j < sizeof(stockPrices) + 1; j++) {
if(stockPrices[j] > highest) {
highest = stockPrices[j];
}
if(stockPrices[j] < lowest) {
lowest = stockPrices[j];
}
}
我似乎找不到无限循环在哪里。
for(int i = 0; i < sizeof(stockPrices) + 1; i++) {
cin >> stockPrices[i];
}
这部分正常工作,这就是为什么我没有意识到我的上行不正确编辑:我认为此部分正常
没有足够的代码来弄清楚您的问题在哪里。但是就在那个片段中,您可能的上限可能错误:
for (int j = 0; j < sizeof(stockPrices) / sizeof(stockPrices[0]); j++)
sizeof
给出字节中对象的大小。对于项目和时间的数组;一项的大小。因此,要获取需要将sizeof
除以一项大小的项目数。
,您可能也不想要+1
。
请注意,您编写的循环将在有或没有此更正的情况下终止。它将在您的版本和访问非法内存的数段末端运行,这可能会使程序崩溃,但不会永远循环。
同样的事情也适用于您的第二个循环。应该是:
for (int i = 0; i < sizeof(stockPrices) / sizeof(stockPrices[0]); i++)
{
cin >> stockPrices[i];
}
此处不正确的上限可能是罪魁祸首。您的原始循环将尝试读取30多个值。如果只提供了30个,那么该程序将挂在第31 cin >> stockPrices[i]
上,等待输入更多数字。
相关文章:
- 过载'operator new'如何导致无限循环?
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 遍历链表时的无限循环
- 循环链表:无限循环
- 比较两个字符串后卡在无限循环中
- 在做一段时间内检查字符的无限循环
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- 可能的无限循环
- 超出 int 的值范围后的无限循环
- 为什么这段代码会导致无限循环?
- 运行无限循环的最小二叉树问题
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 连接线程时的无限循环
- 为什么这种方法会进入无限循环?
- 由于QTextStream的无限循环
- Qt 在另一个线程中无限循环
- 从文件 C++ 读取时的无限循环
- 找不到无限循环发生的位置