非常奇怪的C++错误

Pet*_*han 1 c++

我在编写代码时遇到了一个非常奇怪的问题,这是我的C++代码:

#include <iostream>
using namespace std;

int main()
{
    int qnum;
    cin >> qnum;
    int series[3];
    cin >> series[3];
    cout << qnum;
}
Run Code Online (Sandbox Code Playgroud)

例如,如果我为qnum输入2,为系列[3]输入5,则qnum的值将在最后一行代码中被覆盖.只有当系列的输入为3时才会出现此问题.新的唯一解决方案是将"static"属性添加到qnum,像这样:

#include <iostream>
using namespace std;

int main()
{
    static int qnum;
    cin >> qnum;
    int series[3];
    cin >> series[3];
    cout << qnum;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Oli*_*rth 11

没有series[3].只有series[0],series[1]series[2](数组从0到N-1).

您正在写出数组的末尾,这会导致未定义的行为.