您好,登錄后才能下訂單哦!
在單片機 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。