非常奇怪的C ++错误

时间:2012-06-09 11:34:22

标签: c++

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

#include <iostream>
using namespace std;

int main()
{
    int qnum;
    cin >> qnum;
    int series[3];
    cin >> series[3];
    cout << qnum;
}

例如,如果我为qnum输入2,为系列[3]输入5,则qnum的值将在最后一行代码中被覆盖。仅当系列的输入为3时才会出现此问题。唯一的解决方案for new是为qnum添加“static”属性,如下所示:

#include <iostream>
using namespace std;

int main()
{
    static int qnum;
    cin >> qnum;
    int series[3];
    cin >> series[3];
    cout << qnum;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:11)

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

您正在注销数组的末尾,这会导致未定义的行为。