【问题标题】:The loops for this array works but I still get an Compiler Error? Debug Error Run-Time Check Failure #2 - S这个数组的循环有效,但我仍然得到一个编译器错误?调试错误运行时检查失败 #2 - S
【发布时间】:2016-11-11 23:43:06
【问题描述】:

大家好,我刚开始使用数组。

请有人对这个话题有所了解。这是我创造的,我认为它是有道理的,但我一定错过了一些东西。 我收到调试错误运行时检查失败 #2 - S

错误类型如下:Debug Error Run-Time Check Failure #2 - S

#include<iostream>
#include<iomanip>
#include <climits>


//Prototypes:
int lowestAmount(int[]);
int highestAmount(int[]);



using namespace std;

int main() {

    const int AMOUNT = 9;

    int values[AMOUNT];
    int lowest, highest;

    cout << "Please Insert 10 Numbers of your Choice: ";
    cin >> values[0] >> values[1] >> values[2] >> values[3] >>
        values[4] >> values[5] >> values[6] >> values[7] >>
        values[8] >> values[9];
    cout << endl;
    lowest = lowestAmount(values);
    highest = highestAmount(values);

    cout << "/tThe Lowest out of all of them is: " << lowest <<
        endl;
    cout << "/tThe Highest out of all of them is: " << highest << endl ;


    return 0;
}



int lowestAmount(int val[]) {

    int lowest = INT_MAX;
    int count = 10;
    for (int i = 0; i < count; i++) {
        if (val[i] < lowest)
            lowest = val[i];
    }

    return lowest;
}

int highestAmount(int val[]) {
    int highest = INT_MIN;
    int count = 10;
    for (int i = 0; i < count; i++) {
        if (val[i] > highest)
            highest = val[i];
    }
    return highest;
}

代码有点工作,但不是一直正确,我不知道我做错了什么?我虽然我的逻辑是错误的???有人能解释一下吗???

【问题讨论】:

  • 嗨!你的代码doesn't work?
  • 它,有点,但我得到一个错误说。调试错误运行时检查失败 #2 - S
  • 我将两个函数中的 count var 都增加了 1,所以我放了 10 而不是 9,但我仍然得到错误???

标签: c++ arrays for-loop


【解决方案1】:

数组索引从零开始,这意味着最后一个索引是元素的数量减一。您希望用户输入 10 个数字,并且您确实读取了 vales[0] 到 values[9],但您的数组没有空间。

const int AMOUNT = 9;

int values[AMOUNT];

这意味着你声明了一个足够大的数组来容纳 9 个元素,而不是 10 个。AMOUNT 需要为 10 个。

C++ 不会自动进行边界检查。这意味着如果你在数组之外写,你会得到不可预知的行为,你甚至不能依赖程序总是崩溃。

在你的更高/更低函数中还有一个错误,即使它现在仍然忽略最后一个元素。将数组固定为 10 个元素后,您需要循环直到 i &lt; 10 之后。

同样,在未来,您将通过发布具体什么不起作用来获得更好的帮助,这意味着您应该显示编译器/调试器错误,而不仅仅是您的代码。

【讨论】:

  • 数组启动时是否从0开始?所以从 0-9 是 10 ???我将数量从 9 替换为 10,它起作用了!!然而我很困惑?但是,将其增加到 10 是否像数组从 0 开始到 9 一样,因为 0 到 9 总共有 10 个值??
  • 哦,对不起,我是社区的新手,下次我一定会在帖子中插入错误谢谢。
  • 是的,从0开始,0到9表示有十个地方。数数你的手指:) 这是第一次学习数组时非常常见的混淆来源。但请记住,数组索引从 0 开始,因此最后一个元素的大小为 - 1。在一个十元素数组中,最后一个元素的索引为 9。
  • 我现在明白了,所以它会上升到最后一个数字并停止,它实际上并没有计算它。因此,如果我输入 10,它会看到 10 并停止。酷酷的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
相关资源
最近更新 更多