理解for循环的增强语法

时间:2016-10-24 02:09:03

标签: c

我发现了以下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)的形式吗?

2 个答案:

答案 0 :(得分:2)

在for循环中,可以省略每个初始化,终止和步骤表达式。如果跳过初始化步骤,则不进行初始化。如果跳过该步骤,则不执行任何步骤。如果跳过测试,循环将一直运行,直到它被打破。

我不建议重写这个循环以包含所有三个表达式,而是建议花时间学习这种语法,因为这些语句并不常见。

答案 1 :(得分:1)

for (; indx; indx = parent)

是标准的C for循环。它只是初始化选项的空白(无指令)。