编辑:我简化了原始代码。相同的代码,在不同的C编译器中使用printf()和write()不同的打印顺序
的代码是:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("printf1\n");
write(1, "1 should be after printf\n", 25);
printf("printf2\n");
write(1, "2 should be after printf\n", 25);
return 0;
}
上Ideone意外的结果:
1 should be after printf
2 should be after printf
printf1
printf2
上cs50
printf1
1 should be after printf
printf2
2 should be after printf
预期的结果为什么是输出顺序不同?
你不冲水printfs输出后的输出。当它被刷新时取决于操作系统。见[this](/ questions/1716296/why-does-printf-not-flush-after-call-unless-a-newline-is-the-format-strin) – Tibrogargan
@Tibrogargan谢谢!你指向正确的方向。 – rldyjb