声明后的括号括起来

0 c++ for-loop c++11

我是新手.写了一个代码来打印从1到10的数字总和.这是发生了什么;

for(a = 1; a<=10; a++)
sum += a;
cout<<sum;
Run Code Online (Sandbox Code Playgroud)

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

当我执行以下操作时:

for(a = 1; a<=10; a++)
{
sum += a;
cout<<sum;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

pax*_*blo 10

如果你打破这么大的数字:

1 3 6 10 15 21 28 36 45 55
Run Code Online (Sandbox Code Playgroud)

你可以看到发生了什么 - 它实际上是在每次添加之后输出累积的总和,因为你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
}
Run Code Online (Sandbox Code Playgroud)


jus*_*tin 5

因为:

for(a = 1; a<=10; a++)
sum += a;
cout<<sum;
Run Code Online (Sandbox Code Playgroud)

就像说:

for(a = 1; a<=10; a++) {
    sum += a;
}
cout<<sum;
Run Code Online (Sandbox Code Playgroud)

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