我使用编译器编写了以下代码,该编译器被配置为使用 eclipse 适合 c89 标准。
#include <stdio.h>
int main(void) {
int i=0;
printf("initial value for variable i is: %d\n",i);
while (i<3)
{
if (i==1) {continue;}
printf("%d\n",i);
i++;
}
return 0;
}
问题是代码没有被执行(根本没有错误)并且控制台中没有显示任何内容。删除以下代码行时 if (i==1) {continue;}
一切正常。
最佳答案
何时 i
是 1
,它的值没有改变,所以它仍然是 1
在下一次迭代、下一次迭代中……需要很长时间才能从 1
更改为.
for
的一个优点循环的特点是它将循环控件捆绑在一行中。您不会看到 for (i = 0; i < 3; i++)
的问题作为循环; continue
会跳转到i++
在循环控制中。
您说您正在使用 Eclipse 作为 IDE。这可能就是根本没有输出的原因。它的“终端”在程序中显示为非终端,因此 I/O 是完全缓冲的(而不是终端输出通常情况下的行缓冲)。这反过来意味着在缓冲区填满之前不会出现输出,您调用 fflush(stdout)
,或者程序停止。这是 Eclipse 的一个已知问题。您可以调用 setvbuf()
:添加一行setvbuf(stdout, NULL, _IOLBUF, BUFSIZ);
在开始时确保行缓冲有效。
关于在 while 循环中使用 continue 后代码未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809901/