为什么在遍历它时没有出现数组错误?

时间:2019-05-09 22:19:30

标签: c++ arrays loops indexoutofboundsexception

因此,我建立了一个简单的数组并对其进行迭代。对于每个元素,array [i]的值均为100。我之所以小于4,是因为显然对于五个元素的数组不存在array [5]。

如果数组的索引为0,为什么编译器对我不感到惊讶?数组[5]不应该存在...

using namespace std;

int main()
{
    int array[5];
    for (int i = 0; i < 5; i++)
    {
        array[i] = 100;
    }

    for (int i = 0; i < 5; i++)
    {
        cout << array[i] << "\n";
    }
}

4 个答案:

答案 0 :(得分:3)

int array[5];
for (int i = 0; i < 5; i++)
{
    array[i] = 100;
}

或多或少等于

int array[5];
array[0] = 100;
array[1] = 100;
array[2] = 100;
array[3] = 100;
array[4] = 100;

因此该代码中没有数组超出范围。

答案 1 :(得分:3)

如果i < 5必须等于或小于4,这意味着最大值为array[4],这没有界限。

我认为您一定将它与做i <= 5混淆了,您也经常看到。

答案 2 :(得分:1)

您永远不会被访问[5]。您仅对a [0],a [1],a [2],a [3],a [4]进行了迭代。因此它不会引发任何错误。在循环条件下,您编写了i <5而不是i <= 5,

答案 3 :(得分:1)

声明int array[5];时,5并不表示任何索引。它表示元素数。但是仅在这一点上……当您声明它时。稍后,您可以通过索引0-4访问该数组,因为您已有i < 5

即使您要访问array[5],也不能保证您的编译器会崩溃……但这可能是另一个话题,还是?