我尝试了很多东西。从命令行运行,从cmd运行,使用/K运行,放置系统("暂停");获取字符();盖奇();在返回 0 之前,我根本无法让它运行。我用记事本++编写,用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;
}
我将不胜感激我能得到的任何帮助,我希望你能忍受我的经验不足。
代码中有未定义的行为。
当您声明一个局部变量而不为其分配任何内容时,其值是不确定的。此变量的使用将是未定义的行为,直到您为其赋值。
在这种情况下,是dmg
和x
变量导致了此问题。
这是因为这些语句:
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()
和最后应该只有一个回报。
代码的更多问题:
您不初始化
dmg
和x
,但将它们用作 while 循环的参数float lt1, lt2, dmg, x; // dmg,x uninitialized
在外部 while 循环中,它是一个无限循环,因为您不会对该循环的参数执行任何操作来摆脱它。
就像我上面说的..
main()
应该只有 1 次返回也许你应该看看
break;
而不是返回(我不知道这是否是你想要的,因为我不明白你的代码)