通过简单的例子看c程序死循环
2015-10-22 23:03
253 查看
在解释什么是程序死循环之前,先看一段代码,直观感受一下:
事实上,“Welcome to my town”在运行窗口是不断无休止的执行的。单就这个程序来说,每当执行一遍循环时,数组里面的内容被放进了整形数据0,即就是说,arr[0]——arr[9]里放的内容为0。因为数组长度为10,i刚好是数组的下标,数组最后一个元素为arr[9],当i自加到10的时候,按道理应该是arr[10]=0,但是考虑到数组长度,系统自动找到存放0的第一个位置,即arr[0]。以后,就不断的i自加、循环,导致了死循环的产生。
怎么解决呢?
为了避免出现这样的问题,我们将上面的代码中for里面的i的取值范围修改为:i<10。然后在看看运行结果:
经过修改,该代码不再出现死循环。接下来,我们认识认识什么是死循环。。
“死循环”就是指程序无休止的执行,无论如何都不能跳出循环体的一种现象。目前貌似没有一种算法,对任何一个程序都可以判断是否会出现死循环。因此,在编译的时候,系统都不做死循环检查。在设计程序时,若遇到死循环,我们可以通过按下Ctrl+Pause/Break的方法,结束死循环。
在编程中死循环并不是一个需要避免的问题,相反,在实际应用中,经常需要用到死循环。例如,我们使用的Windows操作系统下的窗口程序中的窗口都是通过一个叫消息循环的死循环实现的。在单片机、嵌入式编程中也经常要用到死循环。在各类编程语言中,死循环都有多种实现的方法,以C语言为例,可分别使用while.for,goto实现。
总结:对于死循环的了解尚浅,需要学习的有很多,需要看的有很多。。最后送上一句话给自己,同时,也给所有看到我的博文的各位
——生命不止,奋斗不息
事实上,“Welcome to my town”在运行窗口是不断无休止的执行的。单就这个程序来说,每当执行一遍循环时,数组里面的内容被放进了整形数据0,即就是说,arr[0]——arr[9]里放的内容为0。因为数组长度为10,i刚好是数组的下标,数组最后一个元素为arr[9],当i自加到10的时候,按道理应该是arr[10]=0,但是考虑到数组长度,系统自动找到存放0的第一个位置,即arr[0]。以后,就不断的i自加、循环,导致了死循环的产生。
怎么解决呢?
为了避免出现这样的问题,我们将上面的代码中for里面的i的取值范围修改为:i<10。然后在看看运行结果:
经过修改,该代码不再出现死循环。接下来,我们认识认识什么是死循环。。
“死循环”就是指程序无休止的执行,无论如何都不能跳出循环体的一种现象。目前貌似没有一种算法,对任何一个程序都可以判断是否会出现死循环。因此,在编译的时候,系统都不做死循环检查。在设计程序时,若遇到死循环,我们可以通过按下Ctrl+Pause/Break的方法,结束死循环。
在编程中死循环并不是一个需要避免的问题,相反,在实际应用中,经常需要用到死循环。例如,我们使用的Windows操作系统下的窗口程序中的窗口都是通过一个叫消息循环的死循环实现的。在单片机、嵌入式编程中也经常要用到死循环。在各类编程语言中,死循环都有多种实现的方法,以C语言为例,可分别使用while.for,goto实现。
总结:对于死循环的了解尚浅,需要学习的有很多,需要看的有很多。。最后送上一句话给自己,同时,也给所有看到我的博文的各位
——生命不止,奋斗不息
相关文章推荐
- 关于葡萄酒标签的一些常识
- 【转】java基础:Java中数据存储方式
- 2015我的读书书单
- 使用 JavaScript 截屏
- iOS学习笔记网络篇之数据解析(JSON/XML)
- 高效搭建LBS与SNS结合的应用
- 论文:论信息系统项目的范围管理
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- 网络通信-前言
- 关于UINavigationContrller官方文档翻译
- 我与ADO.NET二三事(2)
- tesseract-ocr 出现 错误 Please make sure the TESSDATA_PREFIX environment variable is set to the parent d irectory of your "tessdata" directory.解决方案
- JAVA_SE基础——46.引用数据类型变量.值交换[独家深入解析]
- struts2所有jar下载地址
- java中的 FileWriter类 和 FileReader类
- Can't use Subversion command line client: svn
- python例子-Django之传递json到js脚本中。
- 为什么内联函数,构造函数,静态成员函数不能为virtual函数
- CentOS下MYSQL数据库的安装
- c语言的结构体