直接上代码:
1.++i
int add(int a, int b) { int c = 0; b = ++c; return a+b; } int init() { int a = add(3, 4); return a; }
对应的汇编如下:
_Z3addii: .LFB0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $16, %esp movl $0, -8(%ebp) addl $1, -8(%ebp) movl -8(%ebp), %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax movl 8(%ebp), %edx addl %edx, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size _Z3addii, .-_Z3addii .globl _Z4initv .type _Z4initv, @function
重点分析下面这几句:
movl $0, -8(%ebp) ;这句表示 c = 0
addl $1, -8(%ebp);这句表示++c
movl -8(%ebp), %eax;这句表示将c自加的值存入临时寄存器中
movl %eax, -4(%ebp);这句表示将c自加后的值赋值给b
2.i++
int add(int a, int b) { int c = 0; b = c++; return a+b; } int init() { int a = add(3, 4); return a; }
对应的汇编如下:
_Z3addii: .LFB0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $16, %esp movl $0, -8(%ebp) movl -8(%ebp), %eax movl %eax, -4(%ebp) addl $1, -8(%ebp) movl -4(%ebp), %eax movl 8(%ebp), %edx addl %edx, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size _Z3addii, .-_Z3addii .globl _Z4initv .type _Z4initv, @function
重点看下面几句:
movl $0, -8(%ebp) ;这句表示c=0
movl -8(%ebp), %eax;这句表示将c的值放在临时寄存器中
movl %eax, -4(%ebp);这句表示将c未自加前的值赋值给b
addl $1, -8(%ebp);这句表示再将c的值自加1
结论:++i是先自加再使用加后的值,i++是先使用原来的值再自加。
相关推荐
基础化工行业深度研究:I+G行业供需格局向好,产品发展有望持续.pdf
iPhone+商业模式研究 iPhone+商业模式研究
1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ① A.操作对象 B.计算方法 C.逻辑结构 D.数据映象 ② A.存储结构 B.关系 C...
基础化工行业研究:VK3联产推动市场格局集中,I+G、VE等产品价格上行.pdf
我们表明,与早期工作中考虑的单个I型或II型跷跷板案例相比,这种通用的I + II型跷跷板结构导致更多的允许参数空间。 特别是,我们证明在这些情况下,双电荷标量质量MΔ小于当前实验范围内最重的右手中微子质量MN,...
因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;i++ 的后面一步是自增,不是左值。 形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。
界面友好,难度适中,很适合初中级学者参考研究!
为了对U+I型通风方式下的风排瓦斯效率进行研究,本文以某煤矿为实际工程背景,运用数值模拟软件对U+I型通风方式中不同的内错尾巷高度下,即分别为顶板上方2 m、3 m、4 m、5 m时,该通风系统的排瓦斯效果进行了模拟研究,...
基础化工行业周报:能特科技出售议案获通过,I+G、萤石价格继续强势.pdf
2018年中国AI+营销市场研究报告.pdf
Isearch是由美国国家自然科学基金投资,网络信息发掘与检索中心研制开发的一个全文检索引擎,也是最早实现诸如...Isearch系统机制的研究,对于深入了解XML文档检索原理,尤其是拓展XML文档检索系统的功能具有重要意义。
在本文中,我们研究了复矢量场全息p波模型中的p + i p超流体相。 我们发现,在探测极限内,p + ip相和p波相均稳定,因此可以将p和ip级以任意比例混合以形成更通用的p +λip相, 在p波和p + ip相中保持稳定。 结果,...
我们研究中微子质量的I型和II型跷跷板起源的标准模型在左右对称扩展中的中微子双β衰减。 由于规范对称性的增强以及标量扇区的扩展,此模型中有几种新的无中微子双β衰变的物理源。 忽略左右轨玻色子混合和轻中微子...
基于深圳IUV公司做的,基于IUV-Pre5G通信网络规划设计与部署研究的毕业设计,超好的word版资源,对学习相关知识和做毕业设计都有非常好的指导意义。
源支付 ...上传源码到根目录 设置网站运行目录public、随后设置伪静态为ThinkPHP 打开域名就可以到安装界面了 注意:搭建好之后必须设置计划任务! 具体如下 宝塔计划任务——Shell脚本,名称随便-... i=(i+step) )); do
ABSTRACT I 1 绪论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 研究现状 2 2 Web应用程序漏洞检测技术 3 2.1 网络爬虫 3 2.1.1 网络爬虫原理 3 2.1.2 爬取策略 3 2.1.3 Scrapy爬虫架构 4 2.2 SQL注入漏洞 4 2.3 XSS漏洞 4...
利用CFD三维可视化数值模拟技术分别对"U"型与"U+I"型通风方式下采空区瓦斯运移进行了模拟计算,运用UDF接口建立了基于工作面移动坐标下的采空区遗煤瓦斯渗流计算模型与回采巷道内瓦斯弥散运移计算模型,定量对比研究了...
针对这一问题,使用并行I/O技术对系统的输出模块进行优化,并与传统的几种串行I/O方式在不同节点,以及不同计算规模下进行性能比较。通过实验研究数据,对不同I/O方式的不同特点和不同适用场景进行分析,证明在海洋数值...
自从卢梭(Rousseau,2001)提出这一概念以来,学者们就对I-deal进行了许多相关研究。 本文在总结以往文献的基础上,回顾了i-deals的概念,特征,内容和理论基础,并从i-deals的接受者角度梳理了最新的研究成果。和...