0

任何人都可以清除我的疑问..为什么这个程序给出 10 作为输出。你能解释一下机制吗.. for 循环也有;在陈述之前

#include <iostream>
using namespace std;

int main() {
    int i ;
    for ( i =0 ; i<10 ; i++);
    {
      cout<<i ;
    }

    return 0;
}
4

2 回答 2

6
for ( i =0 ; i<10 ; i++);

这是一个完整的循环,末尾的分号表示一个空的主体。因此,它i最终只会递增到10。它10(而不是9)的原因是因为那是延续条件i < 10变为假的时候。

这意味着这个小片段:

{
    cout<<i ;
}

是一个执行过的语句,输出i(left at 10by the loop) 的内容。

在这种情况下,大括号只是将语句放入封闭的范围内,它们根本与循环无关。

因此,如果您想i每次通过循环输出,只需去掉分号,以便大括号及其内容成为该循环的主体。

于 2016-05-30T13:50:36.003 回答
3
for ( i =0 ; i<10 ; i++); // This means loop till i = 10 at which point loop breaks. This is because of ending the for loop with ';'
{ // start of scope
    cout<<i ; // Print the value of i which is 10 now
} // end of scope

考虑到循环已达到 i = 9 的点,因此,'i < 10' 条件为真。
因此,对于下一次迭代,“i++”会将其增加到 10。
现在再次检查测试“i < 10”。此时 '10 < 10' 测试返回 false 并且 for 循环中断并且 i 的值为 10。

于 2016-05-30T13:51:35.793 回答