-2

入力しようとしています

1
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

しかし、何らかの理由でこれを私の出力として取得しています HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHH

すべての H でまったく同じものを出力する必要がありますが、出力が少なく、ランダムな I ではありません。それは何ですか?

#include <iostream>

using namespace std;

const int arrayElements = 40;
int main()
{
    int lineInputs = 0;

    cin >> lineInputs;

    char mySexyArray [lineInputs-1][arrayElements-1];
    int whatever =0;
    for (int i=0;i<lineInputs;i++)
    {
       // cin >> whatever;
        for (int j=0;j<arrayElements;j++)
        {
           cin >>mySexyArray[i][j];
        }
    }




    for (int i=0;i<lineInputs;i++)
    {
        for (int j=0;j<arrayElements;j++)
        {
          cout << mySexyArray[i][j]<<"";
        }
        cout << endl;
    }

    return 0;
}
4

1 に答える 1

4

配列の境界を上書きすると、Undefined Behaviorが発生します。
未定義の動作を持つプログラムがある場合、出力を表示できます。

あなたの配列宣言は次のとおりです。

char mySexyArray [lineInputs-1][arrayElements-1];

ループの実行中:

 for (int i=0;i<lineInputs;i++)
    {
        for (int j=0;j<arrayElements;j++)

配列の添え字は0、配列に属していないメモリに書き込んだだけです。

于 2012-12-30T11:48:09.487 に答える