0

我注意到我的一些程序在 c++ 中的奇怪行为,当我试图找出导致它的原因时,我发现我的控制台输出出了点问题。我使用了具有相同行为的 iostream 和 cstdio 函数。当我在控制台上打印一些东西时它根本不显示。这是我用来观察这种奇怪行为的代码。这段代码正确地输出所有内容(即使它不应该是 IMO):

#include <cstdio>
using namespace std;
int main(void) {
    int a = 0;
    scanf("%d", &a);
    a++;
    printf("result is %d", a);
}

然而,这个(我认为是正确的)不显示任何内容,只显示运行完成消息

#include <cstdio>
using namespace std;
int main(void) {
    int a = 0;
    scanf("%d", &a);
    a++;
    printf("result is %d \n", a);
}

我也试过在“\n”之前删除空格,没有区别。但是,当我在程序末尾放置更多相同的带有“\n”的 printf 函数时,一切都会正确显示(当然是多次)。iostream 的行为方式类似 - 使用 endl 不会导致任何内容出现在控制台上。我究竟做错了什么?至于导致故障的原始代码,我注意到在我的输出中什么都没有出现,但在我的学校中,相同的代码正确输出了所有内容。我在 NetBeans 8.0.2 下工作。提前感谢您的帮助

4

1 回答 1

0

在打印到控制台之前,所有输出数据都会被缓冲。您可以使用fflush\n刷新输出流并打印所有数据。

于 2014-12-06T17:20:57.153 回答