因为某些原因,循环继续

-4 c++ loops for-loop

#include <iostream>

using namespace std;

int main()
{
    int lists[30];
    lists[30] = 30;
    lists[0] = 31;
    cout << lists[30];
    cout << "\n";
    cout << lists[0];
    for(int a = 0; a < lists[30]+lists[0]; a++)
    {
        cout << "\n";
        cout << lists[2];
    }
}
Run Code Online (Sandbox Code Playgroud)

在for循环之后,它应该只显示列表[2]的值61次; 列表[30] = 30并列出[0] = 31,所以组合它们是61. for循环中的表达式是否有效?它似乎永远循环.

Dai*_*Dai 5

使用lists[29],你超出了数组的界限.记住索引是从0开始的,而不是从1开始的.

默认情况下,C++没有对数组进行边界检查,因此:

int array[100];
array[100] = 1;
Run Code Online (Sandbox Code Playgroud)

是相同的:

int* array = calloc( 100, 4 );
*(array + 100) = 1;
Run Code Online (Sandbox Code Playgroud)

...在内存中数组范围之外是+1元素.您正在写入未分配的空间,导致未定义的行为.