莫因, 我刚刚在一些源代码中找到了for循环。
for (;;) {
// some work
if (condition) {
break;
}
}
这for (;;)
如何运作?
答案 0 :(得分:8)
这个for(;;)
是一个无限循环。
根据C11
,章节§6.8.5.3, for
陈述,
声明
for
(子句-1;
表达式-2;
表达式-3 )声明
表现如下:表达式表达式-2 是控制表达式 在每次执行循环体之前进行评估。[...]
和(强调我的)
可以省略子句-1 和表达式-3 。 省略的表达式-2 替换为a 非零常数。
另外,使用控制表达式
迭代语句会导致重复执行一个称为循环体的语句 直到控制表达式比较等于0. [...]
因此,如果删除所有三个,控制表达式将被视为非零,永远为真,因此基本上使其成为无限循环。
答案 1 :(得分:3)
这是一个无限循环,比如
while (1)
这主要用于befroe,因为有些编译器在使用while(1)检测到无限循环时会抱怨。
for的三个部分是optionnal,所以如果缺少初始化部分,那么就没有初始化,如果缺少测试部分,它会假设“是”等等。
答案 2 :(得分:3)
for (;;) {
// some work
if (condition) {
break;
}
}
相当于
do
{
//some work
}while(!condition);
答案 3 :(得分:1)
将此视为"永远"。
它会重复该块直到满足条件,并执行break
语句。
答案 4 :(得分:1)
这是一个无限循环。 这意味着循环将继续执行,直到您使用break或exit函数。