1

我在写代码的时候遇到了一个很奇怪的问题,下面是我的C++代码:

#include <iostream>
using namespace std;

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

例如,如果我为 qnum 输入 2,为 series[3] 输入 5,则在最后一行代码中 qnum 的值将被覆盖。这个问题只会在 series 的输入为 3 时出现。对于 new 的唯一解决方案是将“静态”属性添加到 qnum,如下所示:

#include <iostream>
using namespace std;

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

有任何想法吗?

4

1 回答 1

11

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

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

于 2012-06-09T11:36:48.657 回答