【问题标题】:MinGW compiling wrongMinGW编译错误
【发布时间】:2015-12-01 19:41:10
【问题描述】:

我正在用 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 会这样做,我将不胜感激!谢谢!

【问题讨论】:

标签: c eclipse gcc mingw


【解决方案1】:

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

【讨论】:

  • 谢谢!这似乎是问题所在,我会记住这一点!我是 C 新手(我学过 Java),所以我还在学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
相关资源
最近更新 更多