MinGW编译错误

MinGW compiling wrong

我正在用 C 编写一个程序用于作业,我想在我的 Windows 10 桌面上处理它,但是我在使用 MinGW 时遇到了一个奇怪的问题。

我写的程序如下图:

#include <stdio.h>
int main(){
    //set up variables
    int a, b, c, d;

    //prompt user for integers
    printf("Please enter four different integers:\n");
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &c);
    scanf("%d", &d);

    //return sum
    int sum = a+b+c+d;
    printf("Sum is: %d", sum);

    return 0;
}

当我编译它时,输出如下所示:(其中 1、2、3 和 4 是输入的数字)

1
2
3
4
Please enter four different integers: 
Sum is: 10

这显然不应该发生,因为那是不正常的。为了尝试排除故障,我在笔记本电脑 运行 Arch 上使用 GCC 编译了相同的代码,输出如下所示:(其中 1、2、3 和 4 是输入的数字)

Please enter four different integers:
1
2
3
4 
Sum is: 10

这就是输出 应该 的样子。我在 Linux 和 Windows 计算机上都将 Eclipse Mars 用作 IDE。我也在我的另一台双引导 Windows 10 和 Ubuntu 的笔记本电脑上进行了相同的尝试,并且在 MinGW 和 GCC 之间得到了相同的结果。

如果有人知道为什么 MinGW 会这样做,我将不胜感激!谢谢!

不同的 systems/libraries 对于何时刷新缓冲流的输出有不同的试探法。为了可移植地确保您的 printf() 语句在使用 scanf() 读取之前被刷新并打印到控制台,您需要插入对 fflush(stdout)[=14= 的显式调用].