c语言单片机循环程序,2.2、单片机程序中经常使用到死循环,如何使用C语言写出一个死循...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

C语言实现死循环有很多种方式,但是最常用的就是for (; ;);和while (1);此外,还可以使用goto语句实现类似汇编风格的死循环。

深度解析:

这个题目比较简单,但是很实用。注意for循环中两个分号分开的三个部分其实都是可以省略的,所以当你看到for循环的某个部分缺失时不用惊讶。

goto关键字一向被定义为不建议使用,主要原因是goto无条件到处跳来跳去的超级灵活特性导致它破坏了代码的结构性,使得代码灵活到难以读懂的程度了,这显然是大家不愿意看到的。但是goto也是有其存在的价值的(星爷语录:就算是一张卫生纸,一条破内裤都有它的用处),最适合使用goto的一场场景就是在多重循环体的内部,此时使用goto可以一步直接跳出所有的循环层次(以前使用break则只能逐层跳出,麻烦;现在用goto,一跳顶过去五跳,实惠···)。

熟悉汇编的同学应该能感到,goto实际上是汇编中跳转指令的简单封装(譬如MCS51中的jmp指令,ARM汇编中的b指令)。而for和while、do while循环则是汇编中这些跳转指令的复杂封装,for循环等在汇编层次也是通过跳转指令实现的。之所以大家觉得C语言编程比汇编容易一些,就是因为C编译器帮大家做了一些基础性的封装,形成了C语言这种更符合人类思维方式的结构化编程语言。而直接使用汇编语言,则需要程序员“委屈自己”,去适应机器的思维方式,按照机器所能理解的方式去“讲话”。

代码如下:

#include

// function prototype declaration

void deadloop_for(void);

void deadloop_while(void);

void deadloop_goto(void);

int main(void)

{

//deadloop_for();

//deadloop_while();

deadloop_goto();

return 0;

}

void deadloop_for(void)

{

for (; ;);

printf("----after deadloop----\n");

}

void deadloop_while(void)

{

while (1);

printf("----after deadloop----\n");

}

void deadloop_goto(void)

{

label:

goto label;

printf("----after deadloop----\n");

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值