首页 > 解决方案 > 在 while 循环中使用 continue 后代码不会被执行

问题描述

我使用编译器编写了以下代码,该编译器使用 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;}一切正常。

标签: cloopswhile-loopcontinuec89

解决方案


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);在开头添加一行以确保行缓冲生效。


推荐阅读