【发布时间】:2019-06-28 15:54:39
【问题描述】:
我使用编译器编写了以下代码,该编译器使用 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++。 -
@JonathanLeffler 是的,你可以发布它作为接受它的答案
-
@JonathanLeffler 只是在while循环中使用 continue 时发生了一些奇怪的事情,代码会在不检查条件的情况下继续运行吗?!
-
它检查每次迭代的条件,但
i中的值保持在1,因为continue跳过了i++;行。所以条件永远不会改变;程序不会停止。这可能就是为什么没有输出出现的原因——你说你使用 Eclipse 作为你的 IDE,它的“终端”对程序来说是一个非终端,所以 I/O 是完全缓冲的,在缓冲区填满之前没有输出出现,你调用fflush(stdout),或者程序确实停止。
标签: c loops while-loop continue c89