【发布时间】:2009-12-28 20:12:19
【问题描述】:
我一直在查看一些代码,并且看到了几个示例,其中省略了 for 循环的第一个元素。
一个例子:
for ( ; hole*2 <= currentSize; hole = child)
这是什么意思?
谢谢。
【问题讨论】:
我一直在查看一些代码,并且看到了几个示例,其中省略了 for 循环的第一个元素。
一个例子:
for ( ; hole*2 <= currentSize; hole = child)
这是什么意思?
谢谢。
【问题讨论】:
这只是意味着用户选择不将变量设置为自己的起始值。
for(int i = 0; i < x; i++)
相当于...
int i = 0;
for( ; i < x; i++)
编辑(回应 cmets):这些并不完全等同。变量 i 的作用域不同。
有时后者用于分解代码。如果您的索引变量在 for 循环本身中被修改,您也可以删除第三条语句...
int i = 0;
for(; i < x;)
{
...
i++
...
}
如果你放弃第二条语句,那么你就有一个无限循环。
for(;;)
{
runs indefinitely
}
【讨论】:
for(;i<x;),但在风格上最好使用更简单且更易于阅读的while(i<x)。
int i = 0, j = arrSize - 1 而不是int i = 0, int j = arrSize - 1
for 构造基本上是( pre-loop initialisation; loop termination test; end of loop iteration),所以这只是意味着在这个 for 循环中没有任何初始化。
您可以重构任何for 循环:
pre-loop initialisation
while (loop termination test) {
...
end of loop iteration
}
【讨论】:
这意味着hole的初始值是在我们进入循环之前设置的
【讨论】:
有些人弄错了,所以我只是想澄清一下。
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;
【讨论】:
这意味着循环控制变量在 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++) { }
【讨论】:
您可以省略 for 循环的任何参数。 即:for(;;) {} 与 while(true) {}
大致相同【讨论】:
这意味着hole的初始值是在我们进入循环之前设置的。
看起来像是某种列表遍历。
【讨论】:
假设你想
for (hole=1 ; hole*2 <= currentSize; hole = child)
但是for循环之前hole的值已经是1了,那么你可以把这个循环的初始化部分滑掉:
/* value of hole now is 1.*/
for ( ; hole*2 <= currentSize; hole = child)
【讨论】: