在 C 中打开编译.exe时窗口立即关闭

  • 本文关键字:窗口 exe 编译 c cmd
  • 更新时间 :
  • 英文 :


我尝试了很多东西。从命令行运行,从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;
}

我将不胜感激我能得到的任何帮助,我希望你能忍受我的经验不足。

代码中有未定义的行为

当您声明一个局部变量而不为其分配任何内容时,其值是不确定的。此变量的使用将是未定义的行为,直到您为其赋值。

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

这是因为这些语句:

 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. 您不初始化dmgx,但将它们用作 while 循环的参数

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

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

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

最新更新