2017-10-05 54 views
-1

此处已回答类似问题[https://stackoverflow.com/a/13421435/3276830]。作者说空循环中的更新语句

下面的代码

for (i=0;i<5;i++); 
{ 
    printf("hello\n"); 
} 

解释如下:

  • 重复五次for (i=0;i<5;i++)
  • ...什么也不做(分号)
  • 打开局部变量{一个新的范围
  • ...打印 “你好”
  • 关闭范围}

然而,对于循环

int i = 0; 
for(;i++;cout<<i<<" "); 
cout<<i<<" "; 

输出以下我得到的只是1,但我预计它是123456.....

编辑,我知道前缀和后缀操作之间的区别。但是,我确实错过了第一次循环运行时为0。

+0

你继续的条件是'我++'并迅速计算结果为0,这是falsey –

+0

啊, 我错过了!谢谢@NickA –

+0

[前缀和后缀运算符有什么区别?](https://stackoverflow.com/questions/7031326/what-is-the-difference-between-prefix-and-postfix-operators) –

回答

3
int i = 0; 
for(;i++;cout<<i<<" "); 

这个循环永远无法执行,因为i0,所以i++(递增前值)的计算结果为0这是。改为尝试++i

+0

谢谢,我暗示它错了。谢谢。 –

1

for(;;i++, cout<<i<<" ");

看起来更美观 :)正确的,将工作无论前缀或后缀