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]と(配列は 0 から N-1 まで)しかありませんseries[1]series[2]

未定義の動作の原因となる配列の最後を書き留めています。

于 2012-06-09T11:36:48.657 に答える