代码不';在while循环中使用continue后无法执行

代码不';在while循环中使用continue后无法执行,c,loops,while-loop,continue,c89,C,Loops,While Loop,Continue,C89,我使用编译器编写了以下代码,该编译器被配置为适合使用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++; }

我使用编译器编写了以下代码,该编译器被配置为适合使用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;
}
#包括
内部主(空){
int i=0;
printf(“变量i的初始值为:%d\n”,i);

虽然(i当
i
1
时,它的值没有改变,因此在下一次迭代和下一次迭代中它仍然是
1
,并且…从
1
改变需要很长时间

for
循环的一个优点是它将循环控件捆绑在一行中。您不会看到
for(i=0;i<3;i++)
作为循环的问题;
continue
将跳转到循环控件中的
i++


你说你正在使用Eclipse作为你的IDE。这可能就是为什么没有输出出现的原因。它的“终端”在程序中显示为非终端,因此I/O是完全缓冲的(而不是像终端输出通常那样的行缓冲)。这反过来意味着在缓冲区填满之前没有输出出现,你调用
fflush(stdout)
,或者程序停止。这是Eclipse的已知问题。您可以调用:add a line
setvbuf(stdout,NULL,_IOLBUF,BUFSIZ)
在开始时确保行缓冲有效。

i
1
时,它的值没有改变,因此在下一次迭代和下一次迭代中它仍然是
1
,并且…从
1
更改需要很长时间。
循环的
的一个优点是它捆绑了控件-您可以查看(i=0;i<3;i++)的
问题
作为循环;
继续
将跳转到循环控件中的
i++
。@JonathanLeffler是的,您可以将其作为答案发布以接受吗it@JonathanLeffler只是在使用continue inside循环时发生了一些奇怪的事情,代码是否在不检查条件的情况下继续运行在每次迭代中,
i
中的值保持在
1
,因为
continue
跳过了
i++;
行。因此条件永远不会改变;程序不会停止。这可能就是为什么没有输出出现的原因-您说您使用Eclipse作为IDE,它是“终端”在程序中显示为非终端,因此I/O被完全缓冲,并且在缓冲区填满、调用
fflush(stdout)
或程序停止之前不会显示输出。