C++ 这个数组的循环可以工作,但我仍然得到一个编译器错误?调试错误运行时检查失败#2-S

C++ 这个数组的循环可以工作,但我仍然得到一个编译器错误?调试错误运行时检查失败#2-S,c++,arrays,for-loop,C++,Arrays,For Loop,嘿,伙计们,我刚开始使用阵列 有人能解释一下这个话题吗。这是我创造的,我认为这是有道理的,但我肯定错过了什么。 我得到一个调试错误运行时检查失败#2-S 错误类型如下:调试错误运行时检查失败#2-S #include<iostream> #include<iomanip> #include <climits> //Prototypes: int lowestAmount(int[]); int highestAmount(int[]); using

嘿,伙计们,我刚开始使用阵列

有人能解释一下这个话题吗。这是我创造的,我认为这是有道理的,但我肯定错过了什么。 我得到一个调试错误运行时检查失败#2-S

错误类型如下:调试错误运行时检查失败#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;
}
#包括
#包括
#包括
//原型:
int lowstamount(int[]);
int highestAmount(int[]);
使用名称空间std;
int main(){
常数整数=9;
整数值[金额];
int最低,最高;
cout>值[0]>>值[1]>>值[2]>>值[3]>>
值[4]>>值[5]>>值[6]>>值[7]>>
数值[8]>>数值[9];

cout数组索引从零开始,这意味着最后一个索引是元素的数量减去1。您希望用户输入10个数字,您可以读取
值[0]
值[9]
,但您的数组没有空间容纳它

const int AMOUNT = 9;

int values[AMOUNT];
这意味着您声明的数组足够大,可以容纳9个元素,而不是10个元素。
AMOUNT
必须是10

C++不会自动执行边界检查。这意味着,如果在数组之外编写,将出现不可预测的行为,甚至不能依赖程序总是崩溃

在上/下两个函数中都存在一个错误,即忽略最后一个元素,即使它现在仍然存在。一旦将数组修复为包含10个元素,则需要循环直到
i<10


同样在将来,你会得到更好的帮助,特别是发布不起作用的内容,这意味着你应该显示编译器/调试器错误,而不仅仅是你的代码。

Hi!你的代码?它,有点,但我得到一个错误,它说。调试错误运行时检查失败#2-SI将两个函数中的count var增加了1,因此9的d我放了10,我仍然得到了错误???数组开始时,从0开始吗?所以从0到9是10???我将数量从9替换为10,它起作用了!!然而我很困惑?但是,将它增加到10会像数组从0开始,然后变为9,因为0到9是10个值的总和吗?哦,对不起,我是com的新手munity,下次我也会确保在帖子中插入错误,谢谢。是的,它从0开始,0到9意味着有十个位置。请用手指数一下:)这是第一次学习数组时非常常见的混淆源。但是请记住数组索引从0开始,所以最后一个元素是大小-1。在十元素数组中,last一有索引9。我现在知道了,所以它上升到最后一个数字集并停止,它实际上并不计算它。所以如果我放10,它会看到10并停止。太棒了。谢谢。