0

我是新手。写了一个代码来打印从 1 到 10 的数字总和。这就是发生的事情;

for(a = 1; a<=10; a++)
sum += a;
cout<<sum;

执行这给了我正确的答案,即 55

当我执行以下操作时:

for(a = 1; a<=10; a++)
{
sum += a;
cout<<sum;
}

它给了我一个完全不同的错误答案,即 13610152128364555

为什么会这样?当我在 for 语句后加上大括号时出了什么问题?

我希望这不是一个愚蠢的问题。

4

4 回答 4

10

如果你分解那个大数字:

1 3 6 10 15 21 28 36 45 55

您可以看到发生了什么 - 它实际上是在每次加法后输出累积的总和,因为您cout在循环中。这很难看,因为所有这些数字之间没有分隔符。

如果您正确格式化代码,您会看到差异:

for(a = 1; a<=10; a++)
    sum += a;             // Done for each loop iteration
cout<<sum;                // Done once at the end.

for(a = 1; a<=10; a++)
{
    sum += a;             // Done for each loop iteration
    cout<<sum;            // Done for each loop iteration
}
于 2013-05-22T08:52:30.340 回答
5

因为:

for(a = 1; a<=10; a++)
sum += a;
cout<<sum;

就像说:

for(a = 1; a<=10; a++) {
    sum += a;
}
cout<<sum;

当你这样做时,它会打印一次数字,而不是每次迭代。

于 2013-05-22T08:52:30.837 回答
0

在第一个你正在执行 cout<

在第二个中,您在每次执行循环时都调用它。这使得它打印 1,然后 3,然后 6 ...总是附加它,因为没有换行符。如您所见,您有 55 作为最后一个输出。

于 2013-05-22T08:53:21.377 回答
0

因为花括号中的代码会一直执行,直到 for 循环中的条件变为 false。

于 2013-05-22T08:55:09.927 回答