这是一种奇怪的行为。基本上,我有这个代码:
stdout.printf("Enter some random number: ");
int number = int.parse(stdin.read_line());
stdout.printf(number.to_string());
stderr.printf("THIS IS AN ERROR!\n");
现在奇怪的是,当我编译并运行此代码时,我得到了这个输出:
Enter some random number: 2
THIS IS AN ERROR!
2user@host:...
但如果我在最后两个命令之间添加一行stdout.printf("\n");
,我会在输入中得到这个:
Enter some random number: 2
2
THIS IS AN ERROR!
user@host
为什么会这样?为什么Vala在第一个示例中的sterr.printf()
输出之后输出的数字,而在第二个示例中输出之前的?它不应该只是在第一个例子中打印2THIS IS AN ERROR!
吗?
答案 0 :(得分:3)
Vala正在使用下面的C fprintf
,它显示了这些语义。看看Why does printf not flush after the call unless a newline is in the format string?
如果需要,可以致电stdout.flush()
。