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