gpt4 book ai didi

linux - 方法调用顺序混淆

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:29 24 4
gpt4 key购买 nike

我正在尝试学习 d,所以我从 hello world 开始,并尝试对其进行一些扩展。

import std.stdio;
import core.thread;

void main(string[] args){
writeln("Hello World!");
Thread.sleep(dur!("seconds")(5));
writeln("Press enter key to exit...");
writeln(readln());
}

所以我希望我的输出如下

Hello World!
Press enter key to exit...
//input "abcd"
abcd

但是我得到了这个

//input "abcd"
Hello World!
Press enter key to exit....
abcd

sleep 功能甚至被跳过。发生了什么事?

最佳答案

这是一个常见问题解答,当我阅读标题时,我希望看到一个 IDE,而你标记了它,太棒了!我找不到要链接到的旧答案,但它的缺点是输出和 sleep 确实发生,它们只是由 IDE 管道缓冲,直到最后才看到。

如果您在 readln 之前和/或在第一个 writeln 之后添加一个 stdout.flush();,您将看到输出 - 强制缓冲区在执行任何其他操作之前进入屏幕。

正常的控制台输出会自动刷新在一行上,但 IDE 被视为管道;该程序与另一个程序而不是与用户对话,因此它认为它可以按数据 block 而不是按用户可见行进行缓冲。

关于linux - 方法调用顺序混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39165247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com