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);这个语句后面加了分号,语句本身就没有什么意义了,只相当于一个空的语句,应该要加大括号。追问
{
需要执行的语句1;
需要执行的语句2;
……;
}
还有,你的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语言中,分号表示的是一条语句的结束,用法一定要注意的。至于你问如何改正,说实话我都没明白你程序到底要做什么,所以我也不知道该如何改正,还有要学会用软件调试,而且在你写一个程序的时候,逻辑上要多分析一下,我也不是什么高手,会的也不是太多。
温馨提示:答案为网友推荐,仅供参考