找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12951|回复: 21
收起左侧

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

  [复制链接]
ID:136455 发表于 2016-8-24 15:08 来自触屏版 | 显示全部楼层 |阅读模式
没有while(1)会怎样
回复

使用道具 举报

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)
{
死循环部分
}
回复

使用道具 举报

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

使用道具 举报

ID:135253 发表于 2016-8-24 23:12 | 显示全部楼层
相当于汇编语言的 JMP MAIN,没有死循环,就没有连续效果
回复

使用道具 举报

ID:137536 发表于 2016-8-25 00:26 | 显示全部楼层
不能跳出
回复

使用道具 举报

ID:120896 发表于 2016-8-25 08:09 | 显示全部楼层
这是死循环,就是让单片机重复手头的工作
回复

使用道具 举报

ID:137545 发表于 2016-8-25 09:53 | 显示全部楼层
死循环,为的是循环检测
回复

使用道具 举报

ID:137549 发表于 2016-8-25 10:41 | 显示全部楼层
就是一直执行,如果没有while(1),就是代表运行后结束了程序。会死机的。
回复

使用道具 举报

ID:137555 发表于 2016-8-25 11:03 | 显示全部楼层
无限循环,需要跳出时可用条件语句,加break 跳出
回复

使用道具 举报

ID:111634 发表于 2016-8-25 22:24 | 显示全部楼层
【例5-10】 试求:sum=1+2+…+100。


【例5-10 试求:sum= 1.gif =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机械工业出版社

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


回复

使用道具 举报

ID:137239 发表于 2016-8-25 23:49 | 显示全部楼层
有while(1)使得程序有可执行型,不让程序跑一遍就停了,这样不符合实际使用的规律。
回复

使用道具 举报

ID:5564 发表于 2016-8-26 09:22 | 显示全部楼层
就是进入主循环,让程序一直在while里面工作
回复

使用道具 举报

ID:137653 发表于 2016-8-26 15:18 | 显示全部楼层
死循环,让程序一直执行的
回复

使用道具 举报

ID:137733 发表于 2016-8-27 23:17 | 显示全部楼层
死循环
回复

使用道具 举报

ID:137261 发表于 2016-8-29 11:48 | 显示全部楼层
你基本可以理解为没有while(1)你的代码就执行一次就结束了。有的话会一直执行while(1)l里面的内容
回复

使用道具 举报

ID:137817 发表于 2016-8-29 12:31 | 显示全部楼层
一直循环,自己设定跳出条件
回复

使用道具 举报

ID:137736 发表于 2016-8-29 14:04 来自触屏版 | 显示全部楼层
无限循环
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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