涉及while循环和OR语句的新手C++问题

Newbie C++ issue involving while loops and OR statements

本文关键字:新手 C++ 问题 语句 OR while 循环 涉及      更新时间:2023-10-16

我在学习涉及while循环的C++基础知识时遇到问题。什么时候我运行我的程序,它运行得很好,直到我进入涉及OR(||)语句的while循环。while (totalhumanHP > 0 || totalskeletonHP > 0)应该继续直到一个达到零然后停止正确吗?它只是密切关注totalhumanHP,让skeletonHP不停地进入底片。我不知道or语句在while循环中是如何或为什么不起作用的。

#include <iostream>
#include <string>
#include <random>
#include <ctime>
using namespace std;
int main()
{
    cout << "-----SKELETMANS V HOOMINS-----n";
    int skeletonHP = 90;
    int humanHP = 100;
    int skeletonDMG = 1;
    int humanDMG = 1;
    int totalskeleton = 1;  //Inputted Skele's
    int totalhuman = 1; //Inputted hoomins
    int totalskeletonHP; //Overall Skele HP
    int totalhumanHP; //Overall Hoomin HP
    string battlecry;
    string battlecryenter;
    default_random_engine generator(time(0));
    uniform_int_distribution<int> skeletonrng(1, 22);
    uniform_int_distribution<int> humanrng(1, 20);
    cout << "How Many Skeletmans: ";
    cin >> totalskeleton;
    cout << "How Many Houmints: ";
    cin >> totalhuman;
    totalskeletonHP = totalskeleton * skeletonHP;
    totalhumanHP = totalhuman * humanHP;    
    cout << "Overall Skeleton HP= " << totalskeletonHP << endl;
    cout << "Overall Hoomint HP= " << totalhumanHP << endl;
    cout << endl;
    cout << "What is your battlecry?n (You can use this to start the battle)";
    cout << endl;
    cin >> battlecry;
    battlecry == battlecryenter;
    cout << "Use Your Battlecry To Start The Fight!!!nnnnn";    
    cout << "BattleCry: ";    
    cin >> battlecryenter;
    if (battlecryenter == battlecry)
    {
        cout << "THE FIGHT HAS COMMENCED!!!nnnn";
    }
    else{
        cout << "You 4got alreedy?  UR DOMB MINGnn";    
        cout << "ACTUAL BattleCry: ";
        cin >> battlecryenter;
        if (battlecryenter == battlecry)
        {
            cout << "THE FIGHT HAS COMMENCED!!!nnnn";
        }
    }
    int endskeleton = 0;
    int endhuman = 0;
    while (totalhumanHP > 0 || totalskeleton > 0)
    {
        skeletonDMG = skeletonrng(generator);
        humanDMG = humanrng(generator);
        totalhumanHP = totalhumanHP - skeletonDMG;
        totalskeletonHP = totalskeletonHP - humanDMG;
        cout << "END SKELETON: " << totalskeletonHP << endl;
            cout << "END HOOMING: " << totalhumanHP << endl;
    }
    cout << "Skeleton Ramaining Health: " << totalskeletonHP << endl;
    cout << "Human Remaining Health: " <<  totalhumanHP << endl;
    system("PAUSE");
    return 0;
}

这是因为您使用了OR,所以即使skeletonHP为负,该条件仍然成立,因为totalhumanHP大于0。

只需将其更改为:

while (totalhumanHP > 0 && skeletonHP > 0)

当其中一个达到0时,循环将停止。