【发布时间】:2015-09-28 20:41:50
【问题描述】:
每个人都知道 for 最常见的用法:(0 - 9)
for (int i = 0; i < 10; i++)
不过,我也看到了一些不太常见的版本,例如 (1 - 10)
for (int i = 0; i++ < 10;)
或 (1 - 10)
int i = 0;
for (;i++ < 10;)
这表明循环可能比我想象的更可定制。如果我猜对了,那似乎是
- 总是需要用 2 个分号来分隔 3 个可选语句
- 第二个语句需要转换为布尔值 1 才能继续循环
- 第一个语句是我唯一可以声明变量并被调用一次的语句
- 第三条和第二条语句在每次迭代后调用,可以包含任何内容(除了声明)
- 只要满足这些条件,我可以做任何事情
例如 (0, 3, 7)
for (int i = 0, j = 2; i < 10; i+=++j)
这些类型的 for 循环是否被视为该语言的标准用法?或者只是由于 msvc++ 中的实现设计而发生的事情?关于 for 循环的规则究竟是什么的任何官方说明?
【问题讨论】:
-
我会为您的第三个示例使用 while 循环,因为您使用的只是条件部分。
-
我不明白你的问题。它已经很好地记录了,for 循环表达式部分是什么,以及它们何时执行。你需要分号来表示你想省略的部分,是的。
标签: c++ language-lawyer