在单片机 C 言语编程的时分,每一个程序我们都邑固定的加一句 while(1),这条语句就可以起到死轮回的感化。关于 while 语句来说,他的普通方式是:
while (表达式){
轮回体语句;
}
在 C 言语里,平日表达式契合前提,我们叫做真,不契合前提,叫做假。比方前边 i<30000,当 i 等于 0 的时分,那这个前提成立,就是真;假如 i 大于 30000 的时分,前提不成立,就叫做假。
while(表达式)这个括号里的表达式,为真的时分,就会履行轮回体语句,当为假的时分,就不履行。在这里先不举例,后边碰到时再具体阐明。
还有别的一种状况,就是我们 C 言语里边,除了表达式外,还有常数,习气上,我们把非 0 的常数都以为是真,只要 0 以为是假,所以我们程序中运用了 while(1),这个数字 1,可以改成 2、3、4......等等都可以,多是一个死轮回,一直的履行轮回体的语句,然则假如把这个数字改成 0,那么就不会履行轮回体的语句了。
人人经过进修 for 轮回和 while 轮回,是不是会发生一个疑问?为何有的轮回加上{},而有的轮回却没加呢?什么时分需求加,什么时分不需求加呢?
我们前边讲过,在 C 言语中,分号表现语句的完毕,而在轮回语句里{}表现的是轮回体的一切语句,假如不加大括号,则只轮回履行一条语句,即第一个分号之前的语句,而加上大括号后,则会履行大括号中一切的语句,举个例子看一下吧,上节课的闪耀小灯程序如下所示。
程序一:
while (1){ LED = 0; for(i=0;i<30000;i++); LED = 1; for(i=0;i<30000;i++); }
程序二:
while (1) LED = 0; for(i=0;i<30000;i++); LED = 1; for(i=0;i<30000;i++);
程序一就是我们上节课的程序,直接可以完成闪耀功用。而程序二没有加大括号,从语法下去看是没有任何毛病的,写到 Keil 里编译一下也不会报错。然则从逻辑下去讲,程序二只会一直的轮回“LED = 0;”这条语句,实践上和程序三后果是相反的。
程序三:
while(1){ LED = 0; } for(i=0;i<30000;i++); LED = 1; for(i=0;i<30000;i++);
程序履行到 while(1)曾经进入死轮回了,所今后边三条语句是一辈子也履行不到的。因而为了避免出相似的逻辑毛病,我们引荐,不论轮回语句后边是一条照样多条语句,都加上{}以防失足
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。