有没有人知道为什么如果我在延迟之前放一个printf,它等到延迟完成才打印出de消息?
Code1 with sleep():
int main (void)
{
printf ("hi world");
system("sleep 3");
}
Run Code Online (Sandbox Code Playgroud)
具有自实现延迟的Code2:
void delay(float sec)
{
time_t start;
time_t current;
time(&start);
do{
time(¤t);
}while(difftime(current,start) < sec);
}
int main (void)
{
printf ("hi world");
delay(3);
}
Run Code Online (Sandbox Code Playgroud)
而如果:
printf ("hi world");
delay(3);
printf ("hi world");
delay(3);
Run Code Online (Sandbox Code Playgroud)
它等到睡眠总和,然后它同时打印消息
为什么会这样?
更新:当我呼叫延迟时,我写了延迟("睡眠3"),我的意思是延迟(3).更正
通常,标准输出会被缓冲,直到您:
\n
字符fflush(stdout)
在打电话之前做其中一件事delay()
,你应该看到你的输出.
归档时间: |
|
查看次数: |
4779 次 |
最近记录: |