任何人都可以清除我的疑问..为什么这个程序给出 10 作为输出。你能解释一下机制吗.. for 循环也有;在陈述之前
#include <iostream>
using namespace std;
int main() {
int i ;
for ( i =0 ; i<10 ; i++);
{
cout<<i ;
}
return 0;
}
for ( i =0 ; i<10 ; i++);
这是一个完整的循环,末尾的分号表示一个空的主体。因此,它i
最终只会递增到10
。它10
(而不是9
)的原因是因为那是延续条件i < 10
变为假的时候。
这意味着这个小片段:
{
cout<<i ;
}
是一个执行过的语句,输出i
(left at 10
by the loop) 的内容。
在这种情况下,大括号只是将语句放入封闭的范围内,它们根本与循环无关。
因此,如果您想i
每次通过循环输出,只需去掉分号,以便大括号及其内容成为该循环的主体。
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。