找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10953|回复: 21
打印 上一主题 下一主题
收起左侧

c语言主函数中的while(1)是怎么回事啊?

  [复制链接]
跳转到指定楼层
楼主
ID:136455 发表于 2016-8-24 15:08 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
没有while(1)会怎样
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:137499 发表于 2016-8-24 16:13 | 只看该作者
括号里面为真则执行下一句,while(1)  因为1为真,所以会一直在while语句里循环,跳不出去
回复

使用道具 举报

板凳
ID:97438 发表于 2016-8-24 17:10 | 只看该作者
一般写单片机程序都是这样的结构while(1){循环体}
回复

使用道具 举报

地板
ID:97438 发表于 2016-8-24 17:10 | 只看该作者
初始化部分
while(1)
{
死循环部分
}
回复

使用道具 举报

5#
ID:97438 发表于 2016-8-24 17:12 | 只看该作者
如果没有初始化部分的话,去掉while(1)看起来是没有什么问题,但这是未定义操作,在keil C51里面,没有明确说明main函数是个死循环,所以,while(1)是必要的。。。
回复

使用道具 举报

6#
ID:135253 发表于 2016-8-24 23:12 | 只看该作者
相当于汇编语言的 JMP MAIN,没有死循环,就没有连续效果
回复

使用道具 举报

7#
ID:137536 发表于 2016-8-25 00:26 | 只看该作者
不能跳出
回复

使用道具 举报

8#
ID:120896 发表于 2016-8-25 08:09 | 只看该作者
这是死循环,就是让单片机重复手头的工作
回复

使用道具 举报

9#
ID:137545 发表于 2016-8-25 09:53 | 只看该作者
死循环,为的是循环检测
回复

使用道具 举报

10#
ID:137549 发表于 2016-8-25 10:41 | 只看该作者
就是一直执行,如果没有while(1),就是代表运行后结束了程序。会死机的。
回复

使用道具 举报

11#
ID:137555 发表于 2016-8-25 11:03 | 只看该作者
无限循环,需要跳出时可用条件语句,加break 跳出
回复

使用道具 举报

12#
ID:111634 发表于 2016-8-25 22:24 | 只看该作者
【例5-10】 试求:sum=1+2+…+100。


【例5-10 试求:sum= =1+2+…+100


解:C51编程如下:


void  main( )               //无类型主函数


{unsigned char  n=1;        //定义无符号字符型变量n,并赋初值


unsigned int sum=0;       //定义无符号整型变量sum,并赋初值


while (n<=100)           //循环条件判断:当n100时循环,否则跳出循环


{sum=sum+n;          //循环体语句:累加求和(本语句也可写成:sum+=n;


n++;}              //修正循环变量,n=n+1,并返回循环条件判断


while(1);}               //原地等待


Keil C51软件调试见例9-2


上例语句中,有一条while (1),括号内的值为1,表示始终是真。因此,该语句为无限循环。若while (1)后面有循环体语句,则反复无限执行循环体语句;若while (1)后面无实体循环语句,则表示程序在原地踏步。while (1)C51中一种常用的一种无限循环形式。


需要说明的是,while (1)语句并非本题程序需要,而是为了便于程序调试。若程序中没有该语句,则主程序运行结束后,临时开辟的局部变量存储单元将被释放,系统无法读到nsum存储单元,因而无法显示。而有了while (1)语句,主程序运行尚未结束,仅在while (1)语句行无限循环、原地踏步,局部变量存储单元未被释放,因此能读到并显示nsum的值。



以上摘自张志良编著《单片机原理与控制技术——双解汇编和C51》第3ISBN 978-7-111-42393-5机械工业出版社

书中电路和程序设计有详细说明,程序语句条条有注解。


回复

使用道具 举报

13#
ID:137239 发表于 2016-8-25 23:49 | 只看该作者
有while(1)使得程序有可执行型,不让程序跑一遍就停了,这样不符合实际使用的规律。
回复

使用道具 举报

14#
ID:5564 发表于 2016-8-26 09:22 | 只看该作者
就是进入主循环,让程序一直在while里面工作
回复

使用道具 举报

15#
ID:137653 发表于 2016-8-26 15:18 | 只看该作者
死循环,让程序一直执行的
回复

使用道具 举报

16#
ID:137733 发表于 2016-8-27 23:17 | 只看该作者
死循环
回复

使用道具 举报

17#
ID:137261 发表于 2016-8-29 11:48 | 只看该作者
你基本可以理解为没有while(1)你的代码就执行一次就结束了。有的话会一直执行while(1)l里面的内容
回复

使用道具 举报

18#
ID:137817 发表于 2016-8-29 12:31 | 只看该作者
一直循环,自己设定跳出条件
回复

使用道具 举报

19#
ID:137736 发表于 2016-8-29 14:04 来自手机 | 只看该作者
无限循环
回复

使用道具 举报

20#
ID:137823 发表于 2016-8-29 14:19 | 只看该作者
程序的主循环,需要长时间运行的程序都有这样一个循环,不然就退出程序了。在主循环中可以实现用户功能。也可加个sleep。
回复

使用道具 举报

21#
ID:68282 发表于 2016-8-29 15:22 | 只看该作者
while(1)是死循环让单片机不停的执行程序,没有死循环程序运行一遍后单片机就不知道干啥了,没有嵌入式系统一般都必须加死循环
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表