我发现了以下for
循环,我无法理解它为什么看起来与传统的循环不同,即(init; condition; increment)
:
int parent, i, indx;
for (; indx; indx = parent) {
parent = (indx - 1) / 2;
if (h->queue[parent] >= value) break;
h->queue[indx] = h->queue[parent];
}
有人可以解释如何将其转换为(init; condition; increment)
的形式吗?
答案 0 :(得分:2)
在for循环中,可以省略每个初始化,终止和步骤表达式。如果跳过初始化步骤,则不进行初始化。如果跳过该步骤,则不执行任何步骤。如果跳过测试,循环将一直运行,直到它被打破。
我不建议重写这个循环以包含所有三个表达式,而是建议花时间学习这种语法,因为这些语句并不常见。
答案 1 :(得分:1)
for (; indx; indx = parent)
是标准的C for循环。它只是初始化选项的空白(无指令)。