for (i=0;1;i++)
到底做了什么for loop
什么时候结束在达到i=1
?什么时候会发生?(在互联网和C书(如何编程,Deitel&Deitel)中寻找这种类型的循环,没有任何结果。..)
int i;
for (i=0;1;i++)
{
// Some code starts
// ...
// Some code ends
if (*Something Happens*)
break;
}
P.S.为了便于理解,我简化了原始代码。
5条答案
按热度按时间9lowa7mx1#
因为在C语言中,
int
可以被解释为布尔值,使用零/非零规则(零意味着“假”,其他任何东西都意味着“真”),循环将继续,直到到达循环体中的break
语句。您可以将相同的循环重写为
因为在中间没有条件的情况下,循环将继续,直到
break
。km0tfn4u2#
for (i=0;1;i++)
到底做了什么是一个无限循环,因为
1
(非零值)的计算结果是true
,因此在这种情况下,for
的条件表达式将始终变为true
。for循环什么时候结束
声明
将在条件为
if
中的true
时终止循环。在达到
i=1
的值之后?不我在上面解释过了
什么时候会发生?
i = 1
将在第二次迭代中发生。但这不会终止循环。siotufzp3#
下面的片段是完全相同的
您编写的代码将以语句
break
结束,即代码段中的下面代码lzfw57am4#
这是一个无限循环!你应该使用
break
,并在某些条件下退出循环。5fjcxozz5#
for (i=0;1;i++)
是无限循环,相当于c++中的while(1)或while(true)。因为任何非零变量在c中都会被解释为布尔变量的true。然而
将保证在读取文件末尾时退出循环。
while (1)
或for (i=0;1;i++)
是一种类型的循环,它必须在循环内部中断以确保没有无限循环。我认为这种风格的一个优点将使while
或for
的格式看起来统一。