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

时间:2009-12-28 20:12:19

标签: c++ syntax for-loop

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

一个例子:

for ( ; hole*2 <= currentSize; hole = child)

这是什么意思?

感谢。

8 个答案:

答案 0 :(得分:17)

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

for(int i = 0; i < x; i++)

相当于......

int i = 0;
for( ; i < x; i++)

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

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

int i = 0;
for(; i < x;)
{
...
i++
...
}

如果你退出第二个陈述,那么你就会有一个无限循环。

for(;;)
{
runs indefinitely
}

答案 1 :(得分: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
}

答案 2 :(得分:1)

这意味着我们在进入循环之前设置了hole的初始值

答案 3 :(得分:1)

这意味着循环控制变量在for循环之前被初始化。

For C  code,

int i=0;
for( ; i <10 ; i++) { } //since it does not allow variable declaration in loop 

For C++  code,

for(int i=0 ; i <10 ; i++) { }  

答案 4 :(得分:1)

您可以省略for循环的任何参数。 ie:for(;;){}与while(true){}

大致相同

答案 5 :(得分:1)

这意味着在我们进入循环之前设置了hole的初始值。

看起来像某种列表遍历。

答案 6 :(得分:1)

假设你想要

for (hole=1 ; hole*2 <= currentSize; hole = child)

但是for循环之前的洞的值已经是1,那么你可以放弃循环的这个初始化部分:

/* value of hole now is 1.*/
for ( ; hole*2 <= currentSize; hole = child)

答案 7 :(得分:1)

有些人一直在弄错,所以我只想清理它。

int i = 0;
for (; i < 10; i++)

不同
for (int i = 0; i < 10; i++)

在for关键字中声明的变量仅在该范围内有效。

简单地说。

有效(“i”在循环范围之外声明)

int i = 0;
for (; i < 10; i++)
{
  //Code
}
std::cout << i;

InValid(“i”在循环范围之外不存在)

for (int i = 0; i < 10; i++)
{
  //Code
}
std::cout << i;