C 空for循环是否可以是“for”;“正确吗?”;?

C 空for循环是否可以是“for”;“正确吗?”;?,c,for-loop,C,For Loop,我对C中以下代码的for循环有疑问: main() { int i=1; for(;;) { printf("%d",i++); if(i>10) break; } } 我在一份试卷上看到了这个代码。我认为for循环不会工作,因为它没有条件。但答案是代码没有错误。这是真的吗?如果为true,则如何?for(;;)循环的是一个无限循环,尽管在这种情况下,循环体会采取措施确保它不会永远运行。控件的每个组件都是可选

我对C中以下代码的for循环有疑问:

main()
{
    int i=1;
    for(;;)
    {
        printf("%d",i++);
        if(i>10)
        break;
    }
}
我在一份试卷上看到了这个代码。我认为for循环不会工作,因为它没有条件。但答案是代码没有错误。这是真的吗?如果为true,则如何?

for(;;)循环的
是一个无限循环,尽管在这种情况下,循环体会采取措施确保它不会永远运行。控件的每个组件都是可选的。缺失条件相当于
1
true

循环将更清楚地写为:

for (int i = 1; i < 11; i++)
    printf("%d", i);
for (int i = 1; i <= 10; i++)
    printf("%d",i++);
for (int i=1; i <= 10; i++) {
  printf("%d", i);
}
可通过以下方式更容易地生产:

puts("12345678910");

最后你会得到一条新线。但这些都是元问题。如前所述,循环“有效”。它在语法上是正确的。它也会终止。

即使for循环中没有任何条件,所需的条件也会在for循环中指定


printf语句有
i++
,它不断增加
i
的值,接下来我们有if语句,它将检查i的值是否小于10。一旦i大于10,它将打破循环。

这是一个无限循环。当
中没有针对
的条件时,我们使用
将无限执行
for
正文中的语句。但是,因为在它的主体中有一个
break
语句,如果变量i大于10,执行将停止

正如MSDN中所述:

(;;)
语句是生成无限循环的惯用方法,该循环只能通过break、goto或return语句退出


有关更多文档,请参阅。

您没有在For循环中指定任何参数或条件,因此,这将是一个无止境的循环。由于存在基于另一个外部变量的中断条件,因此它不是无限的

应将其改写为:

for (int i = 1; i < 11; i++)
    printf("%d", i);
for (int i = 1; i <= 10; i++)
    printf("%d",i++);
for (int i=1; i <= 10; i++) {
  printf("%d", i);
}

for(int i=1;i常规for循环有三个部分:

  • 初始化
  • 状况
  • 增量
通常是这样写的:

for (initialization; condition; increment) { statements }
但这三个部分都是可选的。在您的情况下,for循环中确实缺少所有部分,但在其他地方都存在:

  • 初始化为
    int i=1
  • 如果(i>10)中断,则条件为
  • 增量为
    i++
上述代码可以等效地写成:

for (int i = 1; i < 11; i++)
    printf("%d", i);
for (int i = 1; i <= 10; i++)
    printf("%d",i++);
for (int i=1; i <= 10; i++) {
  printf("%d", i);
}

用于(int i=1;我试过了吗?你的结果是什么?@meagar我的系统中没有C。这就是为什么我问你们的原因。@Tom没有编程你就不能学习C,就像没有水你不能学习游泳一样。@Lundin是的,我知道。我之前学过C一段时间了。现在我的系统中没有C。这就是为什么我不得不问我的疑问h这肯定不是一个无限循环,因为它有一个嵌入的出口condition@Avish:循环控件是一个无限循环;循环体确保它不会永远运行。我希望任何向下投票的人都能解释他/她为什么向下投票。提前谢谢。我想我的帖子可能有问题。请解释一下对我来说,为了避免再次犯同样的错误,我投了反对票,因为你的回答错误地说这是一个无限循环,这在问题的上下文中是错误和误导的(“这个代码正确吗?”)。现在您编辑了它,它更正确了,我将删除下一票。@Avish感谢您的解释!我只是想知道是什么错了。“…for循环没有任何条件…”/“…所需的条件在for循环中”.Huh?不清楚吗?for语句中没有提到通常的条件,但是for循环中有类似的条件。