while(1) 和 for ( ; ; )的区别

news2024/11/19 0:39:36

 while(1) 和 for(;;) 它们不都是无限循环吗,作用应该一样啊,它们到底有什么区别?

    要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。

while(1)和for(;;)语法表达

    这里先说一下while(1)和for(;;)语法表达式。

1.while语法表达

    其中:

  • 表达式:是循环条件

  • 语句:为循环体。

    while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示:

 

2.for语法表达

    它的执行过程如下:

1.先求解表达式1

2.求解表达式2

若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;

若其值为假(0),则结束循环,转到第5)步。

3.求解表达式3

4.转回上面第2)步继续执行。

5.循环结束,执行for语句下面的一个语句。

    执行过程可用下图表示:

 

while(1)和for(;;)异同点

    这里先说一下结论,然后再验证验证结论。

1.相同点

    作用和效果都一样:都是实现无限循环的功能。

2.不同点

    while(1):其中括号里面是一个条件,程序会判断真假。而括号里面的“1”永远是一个“真值”。

    其中,每一次循环,编译器都要判断常量1是不是等于零。

    for(;;):这两个;;空语句,编译器一般会优化掉的,直接进入死循环。

    根据上面的描述,你可能会觉得:while(1) 比 for(;;) 要做更多事,汇编代码更多,代码量也更大。

    但事实是这样吗?下面验证一下。

验证while(1)和for(;;)差异

    我们编写分别两个文件for.c和while.c,然后分别生成汇编代码,看下情况。

1.源代码

    while.c:

    for.c:

2.生成汇编

    我们这里使用gcc编译器生成汇编,执行命令如下:

    while汇编代码:

    for汇编代码:

    你会发现,除了文件名不同,其余都相同。

    当然,这里额外说一下,不同代码、不同编译器,以及不同优化等级,可能最终结果有所差异。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.extend

Vue.extend 方法用来对基本的Vue组件进行扩展,,创建他的子类,,通过扩展根节点Vue定义新的组件 const BaseComponent Vue.extend({data(){return{message:"hehe"}}})const ExtendedComponent BaseComponent.extend({mo…

5、Redis持久化

RDB(默认) 在指定的时间间隔,执行数据集的时间点快照 在指定的时间间隔,执行数据集的时间点快照 实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使…

Mars3d实现对图层树顺序进行了调整的同时调整图层的层级

问题: 1.这个图层管理中的移动图层只是移动在树里的显示关系,数据的叠加优先级没有同步修改 原因: 1. 只对同类型图层才有效,如果是矢量图层需要zIndex的才有效。 比如:都是 geoserver发布的wms图层,这种…

六月喜报 | 震坤行荣获多项行业大奖!

六月喜报 | 震坤行荣获多项行业大奖! 六月,震坤行先后荣获上海市工商联工业品服务商会行业五大奖项,以及SiMPL2023第十三届供应链年度中国供应链数字化创新先锋。一路荣誉加冕,蓄势前行,揽获多个行业奖项。 6月1日&am…

局域网远程连接

一根网线连接两台电脑 前言步骤1 设置B“允许远程连接”2 A和B必须在同一个网段下面3 “winr”,输入“mstsc”中4 弹出“远程桌面连接”窗口,输入B的ip地址和B电脑的用户名及密码(winL键锁屏,看看B的用户名和密码是什么&#xff0…

python学习——函数

一、函数的定义 函数就是执行特定任务和完成特定功能的一段代码。使用函数可以对代码进行复用,提高代码的可维护性和可读性,使得程序便于调试。 二、函数的创建 创建格式 #创建和格式 def 函数名([参数]):函数体[return xxx]举例…

h5实现下拉选择

一、先看效果图 二、简单实现一下代码 首先你要引入jQuery.js文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name…

Vue基础 el挂载点、data数据对象

第一步导入vue&#xff0c;第二步在html里面写一点东西&#xff0c;第三步在js里面写一点东西。 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>首页</title><link href"" type"text/css"…

开发小程序为什么会成为餐饮行业的新趋势

在过去的一段时间里&#xff0c;小程序的发展可谓是如火如荼。特别是在餐饮行业&#xff0c;无论是大型连锁企业还是小型独立店铺&#xff0c;都在积极布局小程序开发&#xff0c;这一现象引发了我们的思考&#xff1a;为何开发小程序会成为餐饮行业的新趋势呢&#xff1f; 首…

d3dcompiler_47.dll缺失怎么修复,三种修复方法分享

打开游戏的时候&#xff0c;电脑报错“找不到d3dcompiler_47.dll无法继续执行此代码”&#xff0c;不知道怎么处理&#xff1f;下面小编就详细分享关于d3dcompiler_47.dll的三种修复方法以及作用。d3dcompiler_47.dll是Microsoft公司开发的动态链接库文件&#xff0c;属于Micro…

html实现好看的多种风格导航菜单(附源码)

文章目录 1.设计来源1.1 顶部导航菜单1.1.1 界面风格1-一二级连体导航菜单1.1.2 界面风格2-二级导航下拉框1.1.3 界面风格3-系统开始风格1.1.4 界面风格4-购物类导航菜单1.1.5 界面风格5 - 带搜索扩展的导航条1.1.6 界面风格6-火热效果多级导航条 1.2 悬浮按钮菜单1.2.1 界面风…

Retrofit学习基础

1. 基本使用 Retrofit 网络请求的工作本质上是OkHttp完成&#xff0c;而 Retrofit 仅负责 网络请求接口的封装。App应用程序通过Retrofit请求网络&#xff0c;实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息&#xff0c;之后由 OkHttp 完成后续的请求操作在服…

如何扫码看文件?多个文件如何独立建码?

现在用二维码来承载文件是很常见的一种方式&#xff0c;可以将多个不同文件做成一个二维码或者多个二维码&#xff0c;来让其他人扫码查看&#xff0c;那么文件转二维码的方法是如何来操作的呢&#xff1f;下面教大家使用二维码生成器&#xff08;免费在线二维码生成器-二维码在…

5.7.3 UDP协议格式(二)使用Wireshark分析UDP用户数据报

5.7.3 UDP协议格式&#xff08;二&#xff09;使用Wireshark分析UDP用户数据报 我们通过对Wireshark采集的UDP用户数据报进行分析&#xff0c;判定一下UDP用户数据报报文接收的是否正确&#xff0c;这里我们首先要对Wireshark采集到的UDP数据的含义。 如图 其中分组详情面板中…

编译时间和运行态时间交换的优缺点

前言 &#xff08;1&#xff09;前几天&#xff0c;我刷视频无意之间看到一个视频说&#xff0c;sizeof(a)&#xff0c;这个a是会自增吗&#xff1f; &#xff08;2&#xff09;如果有经验的人肯定会说&#xff0c;不会自增&#xff0c;这是常识。那么将这句话转化为汇编之后会…

GLP-1爆火2023:神药显雏形,争夺引内卷

2023年过半&#xff0c;如果要从创新药角度做一份总结&#xff0c;什么赛道、哪类药物会是“当红炸子鸡”&#xff1f;答案一定是GLP-1类药物。 原本用于治疗二型糖尿病的药物&#xff0c;在国内社交媒体上&#xff0c;关于司美格鲁肽的减肥奇效&#xff0c;甚至引发了一股抢药…

GBDT算法原理以及实例理解(含Python代码简单实现版)

一、算法简介&#xff1a; GBDT 的全称是 Gradient Boosting Decision Tree&#xff0c;梯度提升树&#xff0c;在传统机器学习算法中&#xff0c;GBDT算的上是TOP前三的算法。 想要理解GBDT的真正意义&#xff0c;那就必须理解GBDT中的Gradient Boosting和Decision Tree分别…

python开发构建基于国家气象台免费免费数据查询接口的气象数据采集与可视化分析应用

天气气象数据是用于描述和记录大气环境状态和变化的数据。它包含了各种气象要素和参数的观测值&#xff0c;如温度、湿度、风速、降水量、气压等。 天气气象数据通常由气象站点、卫星观测和气象雷达等设备获取。这些设备会定期测量和记录各种气象要素&#xff0c;并将数据传输…

怎么虚化图片?虚化图片的软件分享!​

虚化图片是一种广泛应用于摄影和设计领域的技术。它可以通过柔化图像的某些部分&#xff0c;使图片更加优美、柔和&#xff0c;使人们更加关注图像的主体&#xff0c;强调出图片的重点。虚化图片的使用场景非常广泛。它可以用于制作海报、广告、杂志等印刷媒体&#xff0c;也可…

编译、安装、调试Linux内核

这里写目录标题 编译安装内核下载内核安装依赖更改.config编译内核安装首先安装模块安装内核更改引导更改grub重启 其他操作清理内核源目录卸载安装的内核修改内核配置菜单实现对新加入内核源码的控制 常见问题1. Module.symvers is missing2. No rule to make target ‘debian…