嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
一、while(1) { }
- 没有划定初始化、更新区域的代码块(位置)。这两项代码的书写,就由作者来随意设置(完成)。后人接手程序,就要花精力查找,无形中增添了工作量。
- 用圆括号括起的判断部分,要求的不是代码块,而是一个,仅一个表达式。这就要求每次判断,都要执行这个表达式,以求得表达式的值,来决定是否继续执行循环。换句话,每次循环之前,都必须执行一次这个表达式。
二、for(;;) { }
- 清楚划定初始化、判断区、更新区域的代码块(位置),后人接手程序,就不必再花精力查找,无形中减轻了工作量。
- 判断区里要求的是 代码块,如果要无条件循环,只需置其为空,与 while 循环相比,节省了一次执行表达式的操作。
- 这就是我偏爱 for 循环的原因。
- 中间没条件就无限循环。
区别:
for(;;) { } 要比 while(1) { } 的优势是:for 里面为空,编译执行之后没有判断的语句,而 while(1)始终都会有执行判断 1 = true,所以在单片机这种低速的、内存资源不多的环境,for(;;)是更好的选择。