为什么C会在一段时间的循环中被卡住?

前端之家收集整理的这篇文章主要介绍了为什么C会在一段时间的循环中被卡住?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我编译并运行这个代码(它是一个更大的程序的一部分)时,Linux将在while循环中途中断,然后停止工作.

下面的代码打印时间:0,然后挂起,在我暂停此过程之前不执行任何操作.为什么会打印时间:0但不是以下行的理智检查?

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

解决方法

输出通常是缓冲的,只能在刷新或换行之后写入.在
printf("sanity check");

没有换行符,所以如果你在这个循环后运行,你不会看到它.
替换它

printf("sanity check\n");

要么

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

你会看到它.

猜你在找的C&C++相关文章