C 而循环可以';检测不到简单的数学运算

C 而循环可以';检测不到简单的数学运算,c,while-loop,codeblocks,C,While Loop,Codeblocks,我试图理解while循环是如何工作的,以及如何使用它们,所以我尝试创建一个循环,代码从一个名为health的变量中删除50个点,直到变量=0,但由于某些原因,它无法检测到删除点的操作,所以它只会一直打印“player has 100 health” #包括 #包括 int main() { /*这是我在胡闹和学习*; 健康指数=100; 而(运行状况>0) printf(“玩家有%d个生命值,\n”,生命值); 健康=健康-50; printf(“玩家受到-50伤害”); printf(“玩家有

我试图理解while循环是如何工作的,以及如何使用它们,所以我尝试创建一个循环,代码从一个名为health的变量中删除50个点,直到变量=0,但由于某些原因,它无法检测到删除点的操作,所以它只会一直打印“player has 100 health”

#包括
#包括
int main()
{
/*这是我在胡闹和学习*;
健康指数=100;
而(运行状况>0)
printf(“玩家有%d个生命值,\n”,生命值);
健康=健康-50;
printf(“玩家受到-50伤害”);
printf(“玩家有%d个生命值,\n”,生命值);

如果(运行状况您需要使用大括号限定属于
的代码的范围,而
使用大括号循环。您可能打算这样做:

while (health > 0) {
    printf("player has %d HP\n", health);
    health = health - 50;
    printf("player took -50 damage ");
    printf("player has %d HP\n", health);
    if (health < 20) (printf("low on health?"));
    else printf("that will leave a mark");
}
while(运行状况>0){
printf(“玩家有%d个生命值,\n”,生命值);
健康=健康-50;
printf(“玩家受到-50伤害”);
printf(“玩家有%d个生命值,\n”,生命值);
如果(健康状况<20)(printf(“健康状况不佳”);
else printf(“将留下标记”);
}

你当前的代码,就像现在一样,将无限期地循环,打印
player有100条生命值
,因为while循环的主体只是默认下一行的
printf
语句。

请学会格式化你的代码!你的while循环只包含
printf()
语句;
health
的值不会改变,因此如果它完全循环,它将继续循环,并且由于
health
设置为
100
,它将保持在
100
,直到您厌倦并中断或以其他方式终止进程。在循环体周围使用大括号-您希望的语句集在循环中执行。
(printf(“运行状况不佳?”);
周围的括号是常规的,不必要的-
printf(“运行状况不佳?”);
就足够了。
while (health > 0) {
    printf("player has %d HP\n", health);
    health = health - 50;
    printf("player took -50 damage ");
    printf("player has %d HP\n", health);
    if (health < 20) (printf("low on health?"));
    else printf("that will leave a mark");
}