在 while 循环中使用 continue 后代码未执行

标签 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++;
    }
    return 0;
}

问题是代码没有被执行(根本没有错误)并且控制台中没有显示任何内容。删除以下代码行时 if (i==1) {continue;} 一切正常。

最佳答案

何时 i1 ,它的值没有改变,所以它仍然是 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/

相关文章:

c - linux 内核中的 mmap() 用于访问未映射的内存

c - scanf 字符串格式

ruby - 有没有一种方法可以编写一个 Ruby 循环,该循环在最大设定时间内运行一次迭代?

javascript - 设置特定时间循环

java - 为什么使用 "while(amount >= 0)"会导致无限 while 循环?

java - 如何在 While 循环中递增整数并将其转换为字符串?

c - 使用标志从命令行读取值

Java 找不到循环符号,逻辑问题?

python - 如何使用.format将列表元素插入字符串并输出多个字符串?

c++ - protobuf-c 和 protobuf 的兼容性