我刚刚开始用 C 语言编程,在练习 for 循环时,我想出了以下代码:
#include <stdio.h>
int main()
{
int x;
for (x=0;x=10;x=x+1)
printf("%d\n",x);
return 0;
}
当我运行代码时,我陷入了无限循环。在我的 C 手册中,它说条件 x =10 始终为真,但我无法理解它。如果我一开始就给变量 x 赋值 0,for 循环是不是应该不开始,或者当 x 的值达到 10 时,循环不是应该停止?
提前致谢!
最佳答案
for
循环的条件部分是错误的。你正在做的是:
for (x = 0; x = 10; x = x +1) {
// Operations
}
这里的条件是x = 10
,这是一种矫揉造作。因此,x = 10
将返回 10,这也意味着 true
。您的 for
循环相当于:
for (x = 0; true; x = x + 1) {
// Operations
}
这就是为什么你有一个无限循环,你应该用带有两个等号==
的比较运算符来替换情感运算符=
。这意味着当 x
等于 10 时,for
将循环。
编辑:正如 Virgile 在评论中提到的,对于第二个 for
循环,x
将从 0 到 INT_MAX
,则行为未定义。因此,您的代码更有可能如下所示:
for (x = 0; true; x = 10) {
// Operations
}
关于c - 无意的无限 'for' 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38636191/