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

时间:2013-10-30 07:29:22

标签: c cmd

我尝试了很多东西。从命令行运行,从cmd运行,用/ K运行,放置系统(“暂停”);的getchar();的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;
}

我很感激能得到的任何帮助,我希望你能用我的经验来承担。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分: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. 您没有初始化dmgx,但您将它们用作while循环的参数

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

  3. 就像我上面说过的那样.. main()

  4. 应该只返回一次
  5. 也许不是回来你应该看看break;(我不知道那是不是你想要的,因为我不理解你的代码)