C语言中的for(;1;)
是什么意思?
在无限循环意义上它与for(;;)
相同吗?
我知道输入1的位置是变量的条件部分,但是在这个for循环中,我不相信它是无限循环。
答案 0 :(得分:6)
根据C标准(6.8.5.3 for statement)
2可以省略clause-1和expression-3。 省略 expression-2被非零常量替换。
所以实际上你自己而不是编译器用非零常量1替换了省略的表达式-2。
所以这两个陈述
for(;1;) { /*...*/ }
和
for(;;) { /*...*/ }
完全等效。
在我看来,编写
要好得多while ( 1 ) { /*...*/ }
而不是上面显示的语句。
答案 1 :(得分:3)
坚信。 For循环工作,直到表达式的条件部分变为false。在C
1中意为“true
”,显然 - 它永远不会变错。
答案 2 :(得分:-1)
基本上,(; 1;)和for(;;)的两个表达式都会给你无限循环。
MSDN说
for语句的所有表达式都是可选的;例如, 以下语句用于编写无限循环:
for (; ; )
{
// ...
}
因此,在循环条件下没有条件会给你一个无限循环。
关于(; 1;)的其他问题:你不相信它会给你无限循环。
它必须是无限循环,因为条件语句的结果不等于0。
以下是一些例子:
for(;1;) //Infinite loop
for(;0;) //Loop will not execute at all
for(;-1;) //Infinite loop.