嵌入式系統中經常要用到無限循環,你怎么樣用C編寫死循環呢?
一、while(1) { }
- 沒有划定初始化、更新區域的代碼塊(位置)。這兩項代碼的書寫,就由作者來隨意設置(完成)。后人接手程序,就要花精力查找,無形中增添了工作量。
- 用圓括號括起的判斷部分,要求的不是代碼塊,而是一個,僅一個表達式。這就要求每次判斷,都要執行這個表達式,以求得表達式的值,來決定是否繼續執行循環。換句話,每次循環之前,都必須執行一次這個表達式。
二、for(;;) { }
- 清楚划定初始化、判斷區、更新區域的代碼塊(位置),后人接手程序,就不必再花精力查找,無形中減輕了工作量。
- 判斷區里要求的是 代碼塊,如果要無條件循環,只需置其為空,與 while 循環相比,節省了一次執行表達式的操作。
- 這就是我偏愛 for 循環的原因。
- 中間沒條件就無限循環。
區別:
for(;;) { } 要比 while(1) { } 的優勢是:for 里面為空,編譯執行之后沒有判斷的語句,而 while(1)始終都會有執行判斷 1 = true,所以在單片機這種低速的、內存資源不多的環境,for(;;)是更好的選擇。