crane_in_sky 2024-08-10 17:03 采纳率: 87.5%
浏览 5
已结题

c++ 清屏怎么会提前运行

代码:



void pe(){
    system("pause");
}
void cs()
{
    system("cls");
}
void zbdx()
{
    cout<<"请选择装备\n"; 
    for(long long i=1;i<=11;i++)
    {
        cout<<i<<":"<<wqm[i];
        cout<<"   增加生命:"<<gzx[i].zsm;
        cout<<"   增加防御:"<<gzx[i].f;
        cout<<"   增加攻击力:"<<gzx[i].g;
        cout<<"   增加气运:"<<gzx[i].q;
        cout<<"   增加暴击率:"<<gzx[i].b<<endl;
    }
    long long xueze;
    cin>>xueze;
    cs();
    if(xueze>=1&&xueze<=11) {
        cout<<"装备成功!\n";
        zb=xueze;
    }
    else cout<<"装备失败\n";
    pe();
    cs();
}

为什么pe()和cs()会提前运行?

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2024-08-10 17:05
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    "pe()" 和 "cs()" 在代码中被预定义为函数,它们的实现方式是由系统的命令行参数 "pause" 和 "cls" 接受控制台输入。这意味着这些函数会在执行命令时自动调用。 然而,在你的例子中,当用户点击 "装备选择" 并输入 "装备" 后,系统会立即打印出一系列命令,并在该界面等待用户的输入来确认是否选择了 "装备"。然后,系统将启动一个循环来询问用户是否有足够的气运值来选择 "装备",这可能会导致 "pe()" 函数提前执行。因此,当用户点击 "装备选择" 并输入 "装备" 之后,程序可能已经完成了对输入值的验证和相应的计算,并在这个过程中提前返回了 "pe()" 函数。在这种情况下,你的代码可能会意外地提前运行。

    为了减少这种风险,你可以考虑添加一些延迟机制或异常处理,以便在用户输入无效或需要更多时间来验证输入之前,让 "pe()" 函数和其他相关的函数有足够的时间运行。例如,你可以使用 sleep() 函数来模拟等待用户的操作,或者在用户提交输入后添加一个错误检查步骤,以确保所有必要的条件都已满足。

    示例修改后的代码:

    void pe(){
        sleep(1); // 模拟等待用户操作
    }
    
    void cs()
    {
        system("cls");
    }
    
    void zbdx()
    {
        cout<<"请选择装备\n"; 
        for(long long i=1;i<=11;i++)
        {
            cout<<i<<":"<<wqm[i];
            cout<<"   增加生命看电视的概率出血:
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 8月10日