0

我已经尝试了很多东西。从命令行运行,从 cmd 运行,使用 /K 运行,放置 system("pause"); 获取字符();getch(); 在返回 0 之前,我根本无法让它运行。我正在用 Notepad++ 编写,在 Cygwin 中编译,窗口在它出现的瞬间显示为空白(根据我的屏幕截图,它可能拍摄得太早了)。基本上我已经尝试了任何我可以自己谷歌搜索的东西。所以我认为调试器没有显示我的代码一定有问题。

#include <stdio.h>

int main()
{
float lt1, lt2, dmg, x;

lt1=10;
lt2=30;

    while(lt2>dmg)
    {
        while(x>0 || lt2>dmg)
        {
        dmg=dmg+x*lt1;
        x--;
        return (dmg);
        }
    x=x+0.01;
    return (x);
    }

printf("Horde factor is: %f", x);
return 0;
}

我会很感激我能得到的任何帮助,我希望你能忍受我的缺乏经验。

4

2 回答 2

3

您的代码中有未定义的行为

当你声明一个局部变量而不给它赋值时,它的值是不确定的。在您为其赋值之前,此变量的使用将是未定义的行为。

在这种情况下,导致此问题的是dmgandx变量。

于 2013-10-30T07:32:06.680 回答
2

这是因为这些声明:

 return (dmg); //this ends the code execution .. because you have returned something from main()
 x=x+0.01;
 return (x); // even this one is wrong

您正在退出那里的代码并且永远不会进入 printf ..

main()在.. 和最后应该只有一个回报。

您的代码存在更多问题:

  1. 您不初始化dmgand x,但您将它们用作 while 循环的参数

    float lt1, lt2, dmg, x; // dmg,x uninitialized
    
  2. 在外部while循环中..它是一个无限循环,因为您对该循环的参数不做任何事情来摆脱它。

  3. 就像我上面说的.. 应该只有 1 个回报main()

  4. 也许你应该调查而不是返回break;(我不知道这是否是你想要的,因为我不明白你的代码)

于 2013-10-30T07:31:40.697 回答