for

时间:2015-11-17 11:15:09

标签: c loops for-loop compilation

我在阅读C代码时注意到一个奇怪的陈述:

for (;;) {
    // some code
}

这是我第一次看到这种语法,但我认为这相当于:

while(true) {
    // some code
}

结果显然是相同的(就逻辑而言)。

那为什么这样写呢? 编译时有区别吗?

2 个答案:

答案 0 :(得分:1)

他们两个都是一样的! 如果我们遵循for循环的语义 然后for循环就像这样:

for(_INITIALIZATION;_CONDITIONN_CHECKING;_OPEARTION){
    //Some code Here
}

现在for循环中的每个术语都是相互独立的。 所以对于(;;)意味着没有任何条件可以打破循环。 定义无限for循环的其他方法是

a)for(;;)
b)for(_INITIALIZATION;;)
c)for(;;operations)
d)for(_INITIALIZATION;;_OPERATIONS)
E)for(_INITIALIZATION;1;_OPERATIONS)

答案 1 :(得分:0)

是的,与while(true)

相比,对于读者而言,在语义上“更有意义”