它对C语言中的(; 1;)意味着什么?

时间:2015-03-11 07:25:54

标签: c for-loop

C语言中的for(;1;)是什么意思?

在无限循环意义上它与for(;;)相同吗?

我知道输入1的位置是变量的条件部分,但是在这个for循环中,我不相信它是无限循环。

3 个答案:

答案 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.