打印
[MM32软件]

关注MCU 开发中的无限循环

[复制链接]
1598|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
drer|  楼主 | 2023-12-21 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 MCU 的开发过程中,我们经常会遇到需要使用无限循环的情况。例如,在前后台系统中,我们需要在一个无限循环中处理各种任务;在实时性操作系统中,我们也可能需要在一个无限循环中调度各个任务。 那么,处理无限循环的语句有哪些写法呢?目前常见的有两种:while(1)和 for(;;)。这两种写法都可以实现无限循环的效果,但它们之间有一些微妙的差别。

首先,让我们来看看 while(1)的写法。while(1)的意思是“当条件为真时执行循环”,这里的条件是一个常量 1,所以***为真,因此会一直执行循环。



这种写法非常简单明了,一眼就能看出这是一个无限循环。然而,它也有一些缺点。首先,由于 while 循环的条件是一个常量,编译器可能会对其进行优化,导致循环的执行速度变慢。其次,如果在循环体内部有 break 语句,那么这个循环就不再是无限循环,而是一个有限循环,这可能会引发一些错误。 相比之下,for(;;)的写法更加复杂一些,但它也有一些优点。for(;;)的意思是“无条件地执行循环”。

for 循环的条件部分为空,这意味着它没有条件判断,因此会一直执行循环。这种写法的好处是,编译器不会对它进行优化,因此循环的执行速度会比较快。此外,即使在循环体内部有 break 语句,这个循环仍然是一个无限循环,不会引发任何错误。 当然,这两种写法并不是绝对的优劣之分,而是各有各的特点和适用场景。如果你只需要一个简单的无限循环,而且不关心性能问题,那么可以使用 while(1)的写法。



如果你需要一个高性能的无限循环,或者担心循环会被误操作成有限循环,那么可以使用 for(;;)的写法。 总的来说,处理无限循环的语句有很多写法,但最常见的就是 while(1)和 for(;;)。选择哪种写法取决于你的需求和偏好,以及程序的具体情况。 除此之外,还有一些其他的无限循环写法,如 do-while、goto 等。这些写法虽然不太常用,但在某些特定情况下也可能会派上用场。例如,do-while 循环可以用来确保循环体至少被执行一次;goto 可以用来跳过循环体的一部分或整个循环体,从而实现更复杂的控制流程。



总之,无论使用哪种无限循环的写法,都需要考虑到程序的可读性和可维护性。一个好的编程习惯是在代码中添加适当的注释,解释循环的目的和作用,以便于其他开发者理解和修改代码。同时,也要注意避免使用过于复杂的循环结构,以免增加代码的复杂性和出错率。
————————————————
版权声明:本文为CSDN博主「橙色的天空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39891419/article/details/135077649

使用特权

评论回复
沙发
我喜欢打游戏| | 2024-1-29 22:12 | 只看该作者
处理无限循环的语句有很多写法,但最常见的就是 while(1)和 for(;;)。

使用特权

评论回复
板凳
ex7s4| | 2024-2-5 13:02 | 只看该作者
无限循环的话,很容易出bug的,容易死机

使用特权

评论回复
地板
cen9ce| | 2024-2-5 14:20 | 只看该作者
一般都是为了执行或者等待才会出现无限循环吧

使用特权

评论回复
5
zhizia4f| | 2024-2-5 15:27 | 只看该作者
For多好啊,不无限循环,而且还好用一些

使用特权

评论回复
6
w2nme1ai7| | 2024-2-5 16:25 | 只看该作者
其实多分析分析这些语法也有意义,有些时候用错语句,就很容易造成空间紧张

使用特权

评论回复
7
d1ng2x| | 2024-2-5 17:29 | 只看该作者
用for吧,比较好用一些

使用特权

评论回复
8
p0gon9y| | 2024-2-5 18:31 | 只看该作者
其实while(1)的话,这就得用break才能出来了吧

使用特权

评论回复
9
q1ngt12| | 2024-2-5 20:32 | 只看该作者
对啊,用while的话就是简单明了

使用特权

评论回复
10
q1d0mnx| | 2024-2-6 08:05 | 只看该作者
一般编译器不开高级优化的话,是不会被优化掉的

使用特权

评论回复
11
kaif2n9j| | 2024-2-6 09:13 | 只看该作者
无限循环的话在单片机里不就是主循环么

使用特权

评论回复
12
y1n9an| | 2024-2-6 11:20 | 只看该作者
用无限循环的目的是啥?让程序无限执行嘛,所以while(1)是靠谱的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

3316

帖子

4

粉丝