我的代码如下:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("hello");
while(1){
// whatever here
}
}
问题是:为什么跳过第一条指令?它只运行循环,你永远不会打印。我用gcc和g ++编译了它,结果相同。
答案 0 :(得分:5)
运行,只是输出缓冲区未在while
之前刷新。
请改用printf("hello\n");
。换行符将刷新缓冲区,以便立即将输出写入控制台。
答案 1 :(得分:3)
您的假设是错误的,您的代码确实运行,只有stdout
没有刷新,而是缓冲。
在fflush(stdout)
之后使用printf("hello")
,这会强制打印stdout。
而且,正如@Bathsheba指出的那样,"\n"
中的换行符(printf
)也会强制它进行刷新,这可以解释为in this SO question。