您好,登錄后才能下訂單哦!
在單片機(jī) C 言語(yǔ)編程的時(shí)分,每一個(gè)程序我們都邑固定的加一句 while(1),這條語(yǔ)句就可以起到死輪回的感化。關(guān)于 while 語(yǔ)句來(lái)說(shuō),他的普通方式是:
while (表達(dá)式){
輪回體語(yǔ)句;
}
在 C 言語(yǔ)里,平日表達(dá)式契合前提,我們叫做真,不契合前提,叫做假。比方前邊 i<30000,當(dāng) i 等于 0 的時(shí)分,那這個(gè)前提成立,就是真;假如 i 大于 30000 的時(shí)分,前提不成立,就叫做假。
while(表達(dá)式)這個(gè)括號(hào)里的表達(dá)式,為真的時(shí)分,就會(huì)履行輪回體語(yǔ)句,當(dāng)為假的時(shí)分,就不履行。在這里先不舉例,后邊碰到時(shí)再具體闡明。
還有別的一種狀況,就是我們 C 言語(yǔ)里邊,除了表達(dá)式外,還有常數(shù),習(xí)氣上,我們把非 0 的常數(shù)都以為是真,只要 0 以為是假,所以我們程序中運(yùn)用了 while(1),這個(gè)數(shù)字 1,可以改成 2、3、4......等等都可以,多是一個(gè)死輪回,一直的履行輪回體的語(yǔ)句,然則假如把這個(gè)數(shù)字改成 0,那么就不會(huì)履行輪回體的語(yǔ)句了。
人人經(jīng)過(guò)進(jìn)修 for 輪回和 while 輪回,是不是會(huì)發(fā)生一個(gè)疑問(wèn)?為何有的輪回加上{},而有的輪回卻沒加呢?什么時(shí)分需求加,什么時(shí)分不需求加呢?
我們前邊講過(guò),在 C 言語(yǔ)中,分號(hào)表現(xiàn)語(yǔ)句的完畢,而在輪回語(yǔ)句里{}表現(xiàn)的是輪回體的一切語(yǔ)句,假如不加大括號(hào),則只輪回履行一條語(yǔ)句,即第一個(gè)分號(hào)之前的語(yǔ)句,而加上大括號(hào)后,則會(huì)履行大括號(hào)中一切的語(yǔ)句,舉個(gè)例子看一下吧,上節(jié)課的閃耀小燈程序如下所示。
程序一:
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++);
程序一就是我們上節(jié)課的程序,直接可以完成閃耀功用。而程序二沒有加大括號(hào),從語(yǔ)法下去看是沒有任何毛病的,寫到 Keil 里編譯一下也不會(huì)報(bào)錯(cuò)。然則從邏輯下去講,程序二只會(huì)一直的輪回“LED = 0;”這條語(yǔ)句,實(shí)踐上和程序三后果是相反的。
程序三:
while(1){ LED = 0; } for(i=0;i<30000;i++); LED = 1; for(i=0;i<30000;i++);
程序履行到 while(1)曾經(jīng)進(jìn)入死輪回了,所今后邊三條語(yǔ)句是一輩子也履行不到的。因而為了避免出相似的邏輯毛病,我們引薦,不論輪回語(yǔ)句后邊是一條照樣多條語(yǔ)句,都加上{}以防失足
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。