声明后的括号括起来

时间:2013-05-22 08:50:46

标签: c++ for-loop c++11

我是新手。 写了一个代码来打印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 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:5)

,因为:

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

就像是说:

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

执行此操作时,它会打印一次而不是每次迭代。

答案 2 :(得分:0)

在第一个你执行cout&lt;

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

答案 3 :(得分:0)

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