因此,我建立了一个简单的数组并对其进行迭代。对于每个元素,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";
}
}
答案 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]
,也不能保证您的编译器会崩溃……但这可能是另一个话题,还是?