MinGW编译错误

时间:2015-09-05 23:12:05

标签: c eclipse gcc mingw

我正在用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会以这​​种方式表演,我会非常感激!谢谢!

1 个答案:

答案 0 :(得分:2)

不同的系统/库在何时刷新缓冲流的输出时具有不同的启发式方法。为了在使用scanf()读取之前可移植地确保刷新printf()语句并将其打印到控制台,您需要将显式调用交错为fflush(stdout)