程序适用于 onlineGDB 编译器,但使用 MinGW 编译时出现逻辑错误

戴顿

我在名为 onlineGDB 的在线编译器上编写了以下程序作为单个块。在这个网站上它工作得很好,但是在我将模块拆分为单独的源文件并使用 MinGW 编译后,它卡在第一个循环(validateInput)中。

bool validateInput(float input) {
    if (input < 0)
        return true;

    return false;
}

int main() {
    float salaries[SIZE] = { 0 };
    float newSalaries[SIZE] = { 0 };
    int i = 0;

    float *salriesPtr = salaries;
    float *newSalariesPtr = newSalaries;

    bool exit = false;
    bool inputDone = false;

    welcome();

    do {
        do {
            salaries[i] = getInput();
            inputDone = validateInput (salaries[i]);
            newSalaries[i] = payRise (salaries[i]);
            i++;
        } while (inputDone == false);

        output(salriesPtr, newSalariesPtr);
        exit = exitProgram ();
    } while (exit == false);

    return 0;
}

该程序应该不断向数组添加值,直到输入负数。这适用于在线编译器,但在使用 MinGW 编译时会创建无限循环。

编辑:这是MVCE

#define SIZE 100

bool validateInput (float input)
{

    if (input < 0)
    return true;

    return false;
}

int getInput ()
{

  int input;

  printf ("Enter salary: ");

  scanf ("%d%*c", &input);

  return (input);
}

int main () {

  float salaries[SIZE] = { 0 };

  bool inputDone = false;   

  do
    {

      salaries[1] = getInput ();

      inputDone = validateInput (salaries[1]);

    }
      while (inputDone == false);

  return 0;
}

和头文件。所有其他源文件只是复制到自己的 .c 文件中的函数。

#ifndef MAIN
#define MAIN

void welcome();
float getInput();
float payRise(float salary);
void output(float* salaries, float* newSalaries);
bool validateInput(float input);
bool exitProgram();

#endif
布鲁诺

您的问题可能是因为您将getInput声明为返回一个浮点数,但它的定义返回一个int

当您执行salaries[i] = getInput();代码int 生成一个浮点数但因为它已经是一个浮点数时,转换是错误的,并且在符号测试之后也是错误的

除此之外,我强烈建议您测试scanf的结果以确保已完成有效输入,否则您肯定不会获得值,因为永远不会绕过无效值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

适用于Mac的Fortran编译器以读取程序

来自分类Dev

使用 MinGW 编译器编译 C++ 程序时如何增加堆栈大小

来自分类Dev

Qt Creator使用MinGW编译器和CMake

来自分类Dev

CMake和MinGW-“ C编译器无法编译简单的测试程序”

来自分类Dev

SCons无法选择编译器(MinGW)

来自分类Dev

适用于Python的AoT编译器

来自分类Dev

Intel C编译器不适用于sudo

来自分类Dev

使用mingw编译mysql2时出现分段错误

来自分类Dev

RVO何时应适用于/确实适用于C ++ 20编译器

来自分类Dev

MinGW编译器错误-如何设置MSYS蝙蝠?

来自分类Dev

仅Windows中的C程序编译器警告(MinGW-w64)

来自分类Dev

为什么此代码段适用于C ++ 17,而编译器在使用C ++ 11时却抱怨呢?

来自分类Dev

使用mingw-w64编译mex时出现链接器错误

来自分类Dev

Boost Spirit Visual C ++编译器错误,适用于GCC

来自分类Dev

适用于Cygwin的Linux交叉编译器-无法在线找到Linux Cygwin编译器工具链

来自分类Dev

执行用C ++编写的.exe问题(使用mingw编译器)

来自分类Dev

在mingw g ++编译器中使用控制台编程环境中的boost

来自分类Dev

C ++:如何在Windows 10上使用编译器MinGW 9.2.0安装OpenCV

来自分类Dev

使用MinGW或VS2012编译器在Qt上启用C ++ 11支持

来自分类Dev

使用 MinGW 编译器和 nar-maven-plugin 避免依赖机器的 POM

来自分类Dev

SCons找不到mingw-w64编译器

来自分类Dev

如何与Qt 4.8.5兼容的Mingw编译器

来自分类Dev

mingw makefile编译器不输出所有内容

来自分类Dev

使用Windows上的程序在Linux上的Mingw编译错误

来自分类Dev

使用Windows上的程序在Linux上的Mingw编译错误

来自分类Dev

Mingw编译错误使用

来自分类Dev

试图通过MinGW通过其makefile编译Asylia ...错误的编译器?怎么修?

来自分类Dev

MinGW编译错误

来自分类Dev

使用代码块和MinGW(32位)进行编译时,阿姆斯壮数字程序产生错误的结果

Related 相关文章

  1. 1

    适用于Mac的Fortran编译器以读取程序

  2. 2

    使用 MinGW 编译器编译 C++ 程序时如何增加堆栈大小

  3. 3

    Qt Creator使用MinGW编译器和CMake

  4. 4

    CMake和MinGW-“ C编译器无法编译简单的测试程序”

  5. 5

    SCons无法选择编译器(MinGW)

  6. 6

    适用于Python的AoT编译器

  7. 7

    Intel C编译器不适用于sudo

  8. 8

    使用mingw编译mysql2时出现分段错误

  9. 9

    RVO何时应适用于/确实适用于C ++ 20编译器

  10. 10

    MinGW编译器错误-如何设置MSYS蝙蝠?

  11. 11

    仅Windows中的C程序编译器警告(MinGW-w64)

  12. 12

    为什么此代码段适用于C ++ 17,而编译器在使用C ++ 11时却抱怨呢?

  13. 13

    使用mingw-w64编译mex时出现链接器错误

  14. 14

    Boost Spirit Visual C ++编译器错误,适用于GCC

  15. 15

    适用于Cygwin的Linux交叉编译器-无法在线找到Linux Cygwin编译器工具链

  16. 16

    执行用C ++编写的.exe问题(使用mingw编译器)

  17. 17

    在mingw g ++编译器中使用控制台编程环境中的boost

  18. 18

    C ++:如何在Windows 10上使用编译器MinGW 9.2.0安装OpenCV

  19. 19

    使用MinGW或VS2012编译器在Qt上启用C ++ 11支持

  20. 20

    使用 MinGW 编译器和 nar-maven-plugin 避免依赖机器的 POM

  21. 21

    SCons找不到mingw-w64编译器

  22. 22

    如何与Qt 4.8.5兼容的Mingw编译器

  23. 23

    mingw makefile编译器不输出所有内容

  24. 24

    使用Windows上的程序在Linux上的Mingw编译错误

  25. 25

    使用Windows上的程序在Linux上的Mingw编译错误

  26. 26

    Mingw编译错误使用

  27. 27

    试图通过MinGW通过其makefile编译Asylia ...错误的编译器?怎么修?

  28. 28

    MinGW编译错误

  29. 29

    使用代码块和MinGW(32位)进行编译时,阿姆斯壮数字程序产生错误的结果

热门标签

归档