for(;;)和 while(1) 有什么区别吗?for()和while()的使用情景。
1 for(;;)和 while(1) 有什么区别吗?
void main(void) {int a = 2 ;// for(;;)while(1){a++;} }
arm-linux-gcc -c -o for.o for.c; arm-linux-ld -o for_elf for.o; arm-linux-objcopy -O binary -S for_elf for.bin; arm-linux-objdump -D -m arm for_elf > for.dis; cat for.dis
00008460 <main>: //for(;;);
8460: e1a0c00d mov ip, sp
8464: e92dd800 stmdb sp!, {fp, ip, lr, pc}
8468: e24cb004 sub fp, ip, #4 ; 0x4
846c: eafffffe b 846c <main+0xc>
00008074 <main>://while(1);
8074: e1a0c00d mov ip, sp
8078: e92dd800 stmdb sp!, {fp, ip, lr, pc}
807c: e24cb004 sub fp, ip, #4 ; 0x4
8080: eafffffe b
没发现区别所在。
00008074 <main>://while(1){a++}
8074: e1a0c00d mov ip, sp
8078: e92dd800 stmdb sp!, {fp, ip, lr, pc}
807c: e24cb004 sub fp, ip, #4 ; 0x4
8080: e24dd004 sub sp, sp, #4 ; 0x4
8084: e3a03002 mov r3, #2 ; 0x2
8088: e50b3010 str r3, [fp, #-16]
808c: e51b3010 ldr r3, [fp, #-16]
8090: e2833001 add r3, r3, #1 ; 0x1
8094: e50b3010 str r3, [fp, #-16]
8098: eafffffb b 808c <main+0x18>
00008074 <main>://for(;;){a++}
8074: e1a0c00d mov ip, sp
8078: e92dd800 stmdb sp!, {fp, ip, lr, pc}
807c: e24cb004 sub fp, ip, #4 ; 0x4
8080: e24dd004 sub sp, sp, #4 ; 0x4
8084: e3a03002 mov r3, #2 ; 0x2
8088: e50b3010 str r3, [fp, #-16]
808c: e51b3010 ldr r3, [fp, #-16]
8090: e2833001 add r3, r3, #1 ; 0x1
8094: e50b3010 str r3, [fp, #-16]
8098: eafffffb b 808c <main+0x18>
2 为什么用for(;;)或者while(1)
详细阅读http://bbs.csdn.net/topics/80195701中下面一段话后面的内容:
《代码大全》里面说:
在C 中,只要允许就用for 循环: C 的for 循环是这种语言强有力的结构之一。它不仅灵
活性强,而且把循环控制代码封装在一起,增加了其可读性。程序员在修改软件时易犯的错误
是;修改了循环前面的初始化循环的代码,但却忘了修改其后面的有关代码。在C 的for 循环
中,所有相关代码集中在循环的顶部,修改起来很容易。如果在C 中能用for 循环替代别的类
型的循环,尽量这样做。
但当while 循环更合适时,别用for 循环。
这个C 中程序虽是for循环却用了while循环的条件头: /* read all the records from a file */ for(rewind(InFile).RecCount = 0; !feof(InFile); RecCount++) { fgets(InputRec[RecCount], MAX_CHARS, InFile); }C 语言的for 循环比其它语言的for 循环优点在于,它的初始化和结束条件很灵活,而这 种灵活性带来的固有缺点是把控制条件放在了循环头,因而对循环体就无法控制了。 把控制循环的语句放到for 循环头如初始化循环变量、终止循环或转向终止的表达式。上 例中,fgets()语句使循环转向中止,但RecCount 语句却没起到这个作用,它是内部语句, 没有起到控制循环的作用。把RecCount 语句放在循环头而把fgets()语句放在循环体中是一 个错误,它使人误解为是RecCount在控制循环。
这个C 程序较好地用了while循环: /* read all the records from a file */ rewind(InFile); RecCount = 0; while(!feof(InFile)) { fgets(InputRec[RecCount], MAX_CHARS, InFile); RecCount++; }
转载于:https://www.cnblogs.com/mylinux/p/3978591.html
for(;;)和 while(1) 有什么区别吗?for()和while()的使用情景。相关推荐
- 思维课和少儿编程的区别
思维课和少儿编程的区别?家长们在给孩子选择一些能够提升孩子能力的课程的时候,可以说是十分的用心.就拿现在很多的家长想要孩子去学习少儿编程的课程来说,他们对于思维课和少儿编程的区别并不是很清楚,今天我们 ...
- 美国商务部发布软件物料清单 (SBOM) 的最小元素(下)
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
- 盛大游戏技术总监徐峥:Unity引擎使用的三种方式
在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...
- 网安面试题汇总--持续记录
介绍:我是一名保安,保卫一方平安,深爱业主小丹,喜欢小熊饼干. 笔者回尝试回答一下面试题并记录,欢迎大佬写下高见. 如下网安面试题,如有侵权,联系笔者删除. 渗透测试(红队攻防) 代码审计 安全研究 ...
- 风控基础指标之决策树的特征选择
摘要:目前主要的决策树算法有ID3.C4.5和CART,在各种不同的软件选择使用决策数时,也有分裂依据的指标选择,主要包括熵(Entropy).基尼不纯度(Gini impurity)和分类误差率(M ...
- 小学计算机集体听课评课,各科听课评课稿
各科听课评课稿 篇一:听评课稿 二年级的教学重点是识字.写字教学,同时结合上下文和生活实际了解课文中词句的意思,,在阅读中积累词语也是重要的教学内容和目标.郭丽娜老师执教的这一课符合课程标准,符合教学 ...
- 离开谷歌的李飞飞没闲着,通过机器学习研究抑郁症!
本文作者Albert Haque, Michelle Guo, Adam S Miner和Li Fei-Fei.文章主要介绍了李飞飞团队的最新研究成果:一种基于机器学习的抑郁症症状严重程度测量方法,该 ...
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
- C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别
最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...
- gcc 和 g++ 的联系和区别,使用 gcc 编译 c++
GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...
最新文章
- PNG 图片压缩原理的两个关键点!
- 专业网络推广浅析单页面网站如何高效做SEO优化?
- python可以在线编程吗-有哪些 python 的在线练习题或编程挑战的网站?
- 多分类问题中混淆矩阵(Confusion Matrix)的Matlab画法
- 列表界面脚本脚本控制精度_AE脚本编辑
- 让你30分钟快速掌握vue 3
- md5修改工具_【q001】如何校验文件的MD5
- php 调试环境配置
- springCloud教程链接
- 中科院信工所经验_2018信工所五室经验贴 - 中国科学院 - 王道论坛,专注于计算机考研的点点滴滴! - Powered by Discuz!...
- 用几何画板演示高尔顿钉板动画
- SendGrid -- Stressful Subject
- Kali 开机启动慢解决方案(用时56秒)
- yarn 出现error An unexpected error occurred错误的解决办法
- Docker容器支持中文并添加中文字体
- runtime 黑魔法
- Lua快速入门篇(基础概述)(Yanlz+toLua+xLua)
- 1,objective-c语言的主要优点和缺陷,objective_C 优缺点
- 【GAMES101】作业6(提高)含BVH与SAH加速查找算法(SVH)和快速排序算法
- 《洞悉敏捷》黄喆:谈谈不同敏捷方法背后的核心精神