我有如下代码:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("hello");
while(1){
// whatever here
}
}
问题是:为什么第一条指令被跳过?它只运行循环,永远不会打印你好。我用 gcc 和 g++ 编译它,结果相同。
它确实运行,只是输出缓冲区没有在您的while
.
改为使用printf("hello\n");
。换行符将刷新缓冲区,因此立即将输出写入您的控制台。
您的假设是错误的,您的代码确实运行,只是stdout
没有刷新,而是缓冲。
使用fflush(stdout)
after printf("hello")
,这会强制打印标准输出。
而且,正如@Bathsheba 所指出的,还有一个换行符 ( "\n"
)printf
强制它刷新,这在这个 SO question中有解释。