为什么C会在中途循环中途卡住?

时间:2011-02-26 03:04:10

标签: c while-loop

当我编译并运行此代码(它是一个更大的程序的一部分)时,Linux会在while循环中途中途,然后停止工作。

下面的代码打印time: 0然后挂起,在我暂停进程之前不做任何其他操作。为什么它会打印time: 0而不是下面的健全性检查线?

while (i < 5)
{
    printf("time: %d\n",elapsedTime);
    printf("sanity check");
    foo();
    i++;
}

1 个答案:

答案 0 :(得分:22)

输出通常是缓冲的,只能在刷新或换行后写入。在

printf("sanity check");

没有换行符,所以如果你在此之后无限循环运行,你将看不到它。 替换为

printf("sanity check\n");

printf("sanity check");
fflush(stdout);

你会看到它。