C语言中while 空语句的作用?

voidmain(){P1=0xff;led=1;while(1){if(key==0){while(key==0);led=~led;delay(20);}}}whil... void main()
{
P1=0xff;
led=1;
while(1)
{
if(key==0)
{
while(key==0);
led=~led;
delay(20);
}
}
}
while语句为什么用空语句,空语句的作用是什么呀,如果改成
if(key==0)
{
while(key==0)
{
led=~led;
delay(20);
}
}为什么不可以呀
展开
 我来答
Hi莫柯
推荐于2017-11-26
知道答主
回答量:25
采纳率:0%
帮助的人:12.2万
展开全部

我觉的这里while(key == 0);的作用是让程序停在这里,等待key != 0 满足后继续往下执行。

如果这里key对应外面的按键,并且key == 0 表示按键被按下,则外面的while(1) 循环是用来检测按键是否被按下,当检测到按键被按下,即if(key == 0)成立 ,执行while(key == 0); 空循环,在这里就应该是等待按钮松开,当按钮松开,key == 0 不再满足,就跳出循环往下执行。


如果没有这个空循环:

void main()
{
    P1=0xff;
    led=1;
    while(1)
    {
        if(key==0)
        {
            led=~led;
            delay(20); 
        }
    }
}

那么当你一直按着按键的时候,if(key == 0)始终满足,会重复执行while(1)中的程序,导致led灯不停改变亮暗状态,直到你抬起按键。仔细看你修改的程序,也会出现相同的结果。

网友莫盈
2013-12-15 · 超过19用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:47.3万
展开全部
这是个控制单片机led灯的程序吧,”while(key==0);“的作用是等待按键抬起,因为如果按键一直保持按的状态的话程序会停在这个死循环上,当按键抬起后再修改led灯的状态。你后来修改的代码是不正确的,因为当按键一直保持按的状态时你的led在不停的切换亮暗状态。如果没看明白请追问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无敌小强ss
2013-12-15
知道答主
回答量:23
采纳率:0%
帮助的人:14万
展开全部
这是一个C51编程文件吧,
while(1)
{
。。。。。
}
这个是一个死循环结构,也就是说程序会一直运行
f(key==0)
{
while(key==0)
{
led=~led;
delay(20);
}
}
这段语句
f(key==0) //判断是否有按键按下
{
while(key==0) //如果按键一直按下LED每隔20个delay闪一次
{
led=~led;
delay(20);
} //按键释放继续while(1)里面的循环,判断按键是否按下
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活如歌_
2013-12-15 · TA获得超过1.5万个赞
知道大有可为答主
回答量:7398
采纳率:78%
帮助的人:2197万
展开全部
while(key==0);

这一句的作用是等待按键释放,你如果把它去掉的话就有可能造成按一次键多次响应了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lgao622
2013-12-15 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6550
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
while(1)
{
}

花括号里面的才是 while语句的 语句体, 1即是永为真,会一直执行 花括号里面的语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式