我对以下 C 代码的 for 循环有疑问:
main()
{
int i=1;
for(;;)
{
printf("%d",i++);
if(i>10)
break;
}
}
我在试卷中看到了这段代码。我认为 for 循环不起作用,因为它没有条件。但答案说代码没有错误。是真的吗?如果是真的,怎么办?
最佳答案
常规的 for 循环由三个部分组成:
- 初始化
- 条件
- 增量
通常是这样写的:
for (initialization; condition; increment) { statements }
但这三个部分都是可选的。在您的情况下,for 循环中确实缺少所有部分,但存在于其他地方:
- 初始化为
int i=1
- 条件是
if (i>10)break
- 增量为
i++
上面的代码可以等价地写成:
for (int i=1; i <= 10; i++) {
printf("%d", i);
}
因此,for 循环所需的所有部分都存在,只是它们不在实际的 for
构造内。该循环可以工作,只是它的编写方式不太可读。
关于空的 for 循环可以是 "correct"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271226/