如何写死循环
曾经有个面试问题 , 嵌入式系统中经常要用到无限循环 , 你怎么样用C编写死循环呢?
方法一:
文章图片
方法二:
文章图片
方法三:
文章图片
当然应该还有其他方法 , 但是我想大都数人都会用到以上三种方法 。 如果再优秀的人 , 可能会想着线程中死循环的耗时处理 , 但不管怎么样 , 如果是你 , 你第一感觉会用哪种方案呢 。
【如何写死循环】我们已经习惯了信手拈来 , 不会去理解语法明确的表达 , 去探究他们这样做的基本原理 , 很多人从没想到过为什么 。
方案一没有划定初始化 , 更新区域的代码块位置 。 如果出现问题 , 需要花精力查找 , 增添了许多工作量 。 而且每次判断都要执行表达式 , 如何中断跳出死循环又是一个需要考虑的事情 。
方案二清楚划定初始化 , 判断区域 , 更新区域的代码块位置 , 后人接手程序 , 不必花精力查找 , 无形中减轻了工作量 。 中间没条件就无限循环 。 判断区里要求的是代码块 , 如果要无条件循环 , 只需置其为空 , 与while循环相比 , 节省了一次执行表达式的操作 。
方案二比方案一更具备优势 , for里为空 , 编译执行后没有判断的语句 , 而while(1)始终都会有执行判断1==true , 所以在单片机这种低速的 , 内存资源不多的环境 , 方案二是更好的选择 。
当然如果能够嵌入方案三 , 说明他是一个很棒的汇编程序员 。
但是如果在单线程中去执行这样的死循环 , 往往会带来很恶劣的影响 , 如果单纯在单片机里的话 , 我想表达的是一般在Soc里面 , 往往建议不要使用死循环 , 这样会带来很多麻烦的事 , 比如如何跳出死循环 , 或者单线程中死循环崩掉带来的影响 。
优秀的你往往不走寻常路 , 可能有的人会觉得以上三种方案有点low , 会采用定时器 , 或者一些比较高端的方式去实现死循环 , 也能够增添不少技术的色彩和迷幻 。 
文章图片
- 创投圈|抖音小店无货源适合新手小白么?如何精细化运营?新手小白看来
- 松下|淘宝店铺信誉分等级如何提升?
- PHP|如何降低用户关注的非必要页面的权重传递?
- 量子纠缠存在于任何维度空间?人类如何逃出三维空间变成“神”?
- 显卡|如何组装旗舰游戏电脑?这里有你想要的答案
- 火星和地球交换位置会如何?火星会出现生命吗?答案没你想得简单
- 快手视频|视频号和抖音快手的差异化在哪里呢?你应该如何选择适合你的平台
- AirPods|如何进行微信活动运营才有效?
- 酷睿处理器|AMD Zen4如何接招?13代酷睿Z790主板偷跑:DDR4内存还在
- 蓝牙AOA定位那点事系列085:如何应对第一次合作软件开发合作伙伴的问题和需求
