第一个"for"参数为空时是什么意思?

nun*_*nos 4 c++ syntax for-loop

我一直在查看一些代码,我已经看到了几个例子,其中省略了for循环的第一个元素.

一个例子:

for ( ; hole*2 <= currentSize; hole = child)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

谢谢.

Pac*_*ace 17

它只是意味着用户选择不将变量设置为它们自己的起始值.

for(int i = 0; i < x; i++)
Run Code Online (Sandbox Code Playgroud)

相当于......

int i = 0;
for( ; i < x; i++)
Run Code Online (Sandbox Code Playgroud)

编辑(回应评论):这些并不完全相同.变量i的范围是不同的.

有时后者用于分解代码.如果在for循环中修改了索引变量,也可以删除第三个语句...

int i = 0;
for(; i < x;)
{
...
i++
...
}
Run Code Online (Sandbox Code Playgroud)

如果你删除第二个语句,那么你就有一个无限循环.

for(;;)
{
runs indefinitely
}
Run Code Online (Sandbox Code Playgroud)

  • 实际上那些并不等同.在for关键字中声明时,"i"仅针对该范围声明. (5认同)

cyb*_*org 8

for构造基本上是( pre-loop initialisation; loop termination test; end of loop iteration),所以这只意味着在这个for循环中没有任何初始化.

你可以for这样重构任何循环:

pre-loop initialisation
while (loop termination test) {
...
end of loop iteration
}
Run Code Online (Sandbox Code Playgroud)