while循环中的OR运算符不会退出

Luc*_*llo 0 c while-loop

do{
    printf("Monster name:%s\n",monsternames[globalvar.monstercatego][globalvar.monsternivel]);
    printf("Monster Life:%d\n",globalvar.monsterhp);
    printf("------------------------------------------\n");
    printf("----------------BattleGround--------------\n");
    printf("------------------------------------------\n");
    printf("Player name:%s\n", nomeheroi);
    printf("Player life:%d\n", globalvar.playerhp);
    printf("----------------------------------------\n");
    printf("------------------Menu------------------\n");
    printf("----------------------------------------\n");
    printf("A - Attack\n");
    printf("D - Defend\n");
    scanf(" %c",&opcaobattle);
    switch(opcaobattle)
    {
        case 'a':
        danoPMonster();
        break;

        case 'd':

        break;
    }
  }while((globalvar.monsterhp >= 0) || (globalvar.playerhp >= 0));
Run Code Online (Sandbox Code Playgroud)

我的控制台显示:

Monster name:Rat
Monster Life:2
----------------------------------------
----------------BattleGround------------
----------------------------------------
Player name:Test
Player life:10
----------------------------------------
------------------Menu------------------
----------------------------------------
A - Attack
D - Defend

a

Monster name:Rat
Monster Life:-1
----------------------------------------
----------------BattleGround------------
----------------------------------------
Player name:Test
Player life:10
----------------------------------------
------------------Menu------------------
----------------------------------------
A - Attack
D - Defend
Run Code Online (Sandbox Code Playgroud)

它清楚地表明globalvar.monsterhp < 0并没有留下任何想法的循环?

twi*_*wid 5

这是因为你正在使用||逻辑OR运算符意味着任何一个条件都将为true然后循环将继续.和玩家的生活是>0,所以它不是退出循环