我一直在查看一些代码,我看过几个例子,其中省略了for循环的第一个元素。
一个例子:
for ( ; hole*2 <= currentSize; hole = child)
这是什么意思?
感谢。
答案 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;