0

新手来了 尝试运行这个短程序时,我似乎在内存位置出现 Range Error。我不知道这意味着什么,而且有点令人沮丧。

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 回答