【问题标题】:Update statement in empty for loop空for循环中的更新语句
【发布时间】:2017-10-05 14:03:18
【问题描述】:

这里已经回答了一个类似的问题[https://stackoverflow.com/a/13421435/3276830]。作者说

以下代码

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

解释如下:

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

但是,对于下面的for循环

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

我得到的输出只是1,但我希望它是123456.....

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

【问题讨论】:

  • 您的继续条件是i++,它很快就会评估为 0,这是错误的
  • 啊,我错过了!谢谢@NickA
  • @ChristopherPisz 我知道前缀和后缀操作之间的区别。但是,是的,我确实错过了第一次循环运行时为 0。

标签: c++


【解决方案1】:
int i = 0;
for(;i++;cout<<i<<" ");

这个循环永远无法执行,因为i0,所以i++ 的计算结果为0(值递增它之前)是false .请改用++i

【讨论】:

    【解决方案2】:

    for(;;i++, cout&lt;&lt;i&lt;&lt;" ");

    看起来更美观 :) 正确,无论前缀还是后缀都可以使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2011-08-17
      • 2014-08-28
      • 2016-06-16
      • 2019-06-09
      相关资源
      最近更新 更多