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

Rav*_*mer 9 c while-loop

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

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

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

sch*_*der 22

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

printf("sanity check");
Run Code Online (Sandbox Code Playgroud)

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

printf("sanity check\n");
Run Code Online (Sandbox Code Playgroud)

要么

printf("sanity check");
fflush(stdout);
Run Code Online (Sandbox Code Playgroud)

你会看到它.