0

ここの初心者。この短いプログラムを実行しようとすると、メモリ位置で範囲エラーが発生するようです。意味が分からず、少しイライラしています。

int main()
{
int grains_current = 1;
vector <int> previous;
int sum = 0;
int i = 0;

for (int i = 0; i<10; ++i) sum += previous[i];
    previous.push_back(grains_current);

    grains_current = grains_current*2;

    if (sum >= 10)
        cout<<i<<"\t\n\n";
4

1 に答える 1

3
sum += previous[i];

この時点では、ベクトルpreviousには値が与えられていないため、範囲外のこのアドレスにアクセスすると、未定義の動作が発生します。

更新:これがあなたのコードがどうあるべきだと思うかです:

for (int i = 0; i < 10; ++i)
{
    previous.push_back(grains_current);
    sum += previous[i];

    grains_current *= 2;

    if (grains_current >= 1000)
        std::cout << sum << "\n\n";
}
于 2013-10-03T14:31:25.767 に答える