在C / C ++中,以下是什么意思?
for(;;){
...
}
答案 0 :(得分:30)
这是一个无限循环,相当于while(true)
。如果未提供终止条件,则条件默认为true
。
答案 1 :(得分:7)
在C和C ++(以及其他一些语言)中,for
循环有三个部分:
例如:
for (i = 1, accum = 0; i <= 10; i++)
accum += i;
会将数字从1到10加起来。
大致相当于以下内容:
i = 1;
accum = 0;
while (i <= 10) {
accum += i;
i++;
}
但是,没有任何要求for
语句中的部分实际上包含任何内容,如果缺少迭代条件,则认为它是真的。
所以for(;;)
循环基本上只是意味着:
换句话说,它是一个无限循环。
答案 2 :(得分:6)
循环,直到循环内的某些break
,exit
,throw
等语句执行。基本上,您可以将for
循环视为包含:
for (setup; test; advance)
...
如果“test”为空,则认为是true
,循环继续运行。空“设置”和“提前”根本不执行任何操作。
答案 3 :(得分:4)
无限循环,一直持续到break(),exit()或goto语句。
答案 4 :(得分:2)
即使this answer暗示两个构造是等效的,在C语言中for(;;)
和while(1)
(两者都会创建无限循环)之间也存在细微的差别(并且可能是编译器-依赖)。
某些编译器(例如Windriver DIABData)在使用while(1)
时抱怨“条件始终为真”。
更改为for(;;)
可以消除警告,可能是因为后一个表达式在语义上更强,可以有目的地创建无限循环,并且根本没有“永远为真”的条件(加上写)。
另一方面,正如Adrian在评论中指出的那样,C ++语言对两种结构都没有影响:
C ++标准指出,缺少条件使得隐含的while子句等效于while(true)
,而for ( for-init-statement condition opt ; expression opt )
语句等效于{ for-init-statement while ( condition ) { statement expression ; } }