如何在C语言程序中重一个循环跳到另一个循环

while(1)
{
a=numdis1;
b=numdis2;
numdis1=80;numdis2=60;
P0=0x04,P2=0x00;
for(a=80;a>=20;a--)
{
for(b=60;b>=0;b--)
{
numdis1--;
numdis2--;
display1( numdis1,numdis2);
delayms(1000);
}
}
if(a==20&&b==0);
c=numdis1;
d=numdis2;
numdis1=20;numdis2=20;
P0=0x80,P2=0x22;
for(c=20;c>=0;c--)
{
for(d=20;d>=0;d--)
{
numdis1--;
numdis2--;
display1( numdis1,numdis2);
delayms(1000);
}
}
}
}
这个程序为什么执行上一个循环完了 之后不执行下一个循环了

for(a=80;a>=20;a--)和for(b=60;b>=0;b--)这两个循环中,当a=20时,for(a=80;a>=20;a--)这个循环仍然有效,只有当a<20时才会退出循环,所以你后面的if(a==20&&b==0)条件就永远不会成立;另外for(b=60;b>=0;b--)这个循环语句中,如果你的变量b定义的是无符号型变量的话,这个循环语句就是一个死循环,永远都不会退出来,同样因为当b=0时,循环条件依然成立,再执行一次b--之后,b的值又会变为该变量的最大值(如:b为unsigned char变量的话,b=0时,b--等于255),这样b>=0永远都成立。
还有,你的if(a==20&&b==0);这个语句后面加了分号,语句本身就没有什么意义了,只相当于一个空的语句,应该要加大括号。追问

那请问这个该如何改正

追答

for(a=80;a>=20;a--)改为for(a=80;a>20;a--)  for(b=60;b>=0;b--)改为for(b=60;b>0;b--)  这样后面的if(a==20&&b==0)才有可能满足,

另外if 语句应该为:

if(条件语句) 需要执行的语句;

或者:

if(条件语句)
    {
        需要执行的语句1;
        需要执行的语句2;
        ……;
    }

一定要注意分号,C语言中,分号表示的是一条语句的结束,用法一定要注意的。至于你问如何改正,说实话我都没明白你程序到底要做什么,所以我也不知道该如何改正,还有要学会用软件调试,而且在你写一个程序的时候,逻辑上要多分析一下,我也不是什么高手,会的也不是太多。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网