直接上代码:
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++是先使用原来的值再自加。
相关推荐
### 对于含有n个内节点的二元树,证明E=I+2n。其中E、I分别为外部和外部路径长度。 #### 背景知识 ...这一结论不仅加深了我们对二叉树的理解,也为进一步研究和应用二叉树提供了坚实的理论基础。
【基础化工行业深度研究:I+G行业供需格局向好,产品发展有望持续】 I+G,即肌苷酸二钠(Inosine Monophosphate)和鸟苷酸二钠(Guanylic Acid Disodium Salt),是两种重要的核苷酸类调味剂,广泛应用于鸡精、增鲜...
《I++房地产专业搜索引擎》商业计划书是一份详尽阐述如何构建并运营一个专注于房地产领域的高效搜索引擎的蓝图。这份计划书旨在展示如何利用先进的技术、数据处理和算法优化,为房地产行业提供精准、全面的信息检索...
### USBCAN-I+/II+智能USB转CAN接口卡关键知识点解析 #### 一、产品概述与技术背景 ...无论是对于工程师还是研究人员来说,它都能够提供强大的技术支持,助力于各种复杂应用场景下的数据通信与控制任务。
1. **市场分析**:对房地产市场的当前状况、市场规模、增长潜力、竞争格局进行深入研究,识别出I++搜索引擎的市场机会和挑战。 2. **产品描述**:详细说明I++房地产专业搜索引擎的功能特性,如智能化的搜索算法、...
最后,这篇文章通过引入新的预处理器(I+S1),并对其进行了数学分析和数值验证,为迭代方法的理论研究和实际应用提供了一个新的视角。这种研究对于推动迭代方法的理论和实践都有着积极的意义,并对从事相关研究的学者...
在本文中,研究者们提出了使用预条件矩阵P = I + Cα的改进Gauss-Seidel迭代法,称为IMGS方法,以加速收敛速度。 预条件矩阵P = I + Cα的构造是基于A的结构和性质设计的,其中I是单位矩阵,Cα是一个参数化矩阵,...
基础化工行业研究:VK3联产推动市场格局集中,I+G、VE等产品价格上行.pdf
1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ① A.操作对象 B.计算方法 C.逻辑结构 D.数据映象 ② A.存储结构 B.关系 C...
我们表明,与早期工作中考虑的单个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时,该通风系统的排瓦斯效果进行了模拟研究,...
- 使用Bochs模拟器:Bochs是一款强大的X86硬件平台模拟器,可以模拟包括I/O设备、内存和BIOS在内的各种硬件,支持多种CPU类型和内存大小设置。在实验中,工具包提供了免安装版本的Bochs,用户需要根据配置文件...
6. 文件I/O:SPY++可能有保存和加载监控数据的功能,涉及到文件I/O操作,如读写文本文件或二进制文件。 三、学习与实践 学习SPY++源代码,不仅可以加深对Windows API的理解,还能掌握MFC框架的使用,提升在Windows...
死亡ioo(可能是一个项目名称或错误拼写)在这里可能是特定的仿真案例或者自定义的MAC协议实现。 在无线传感器网络仿真中,基于Omnet++的仿真可以帮助我们研究不同MAC协议对网络性能的影响,例如吞吐量、延迟、能量...
基础化工行业周报:能特科技出售议案获通过,I+G、萤石价格继续强势.pdf
2018年中国AI+营销市场研究报告.pdf
结合性规定了同优先级的算符如何组合,比如乘法和除法是左结合的,这意味着"A*B*C"会先计算"A*B"再与"C"相乘。 在实际的编译器实现中,我们会为每个算符定义一个优先级,并创建一个算符优先表。对于文法中的每个...
output[(n - 1) / 2 + 1 + i] = input[n - 3 - 2 * i]; } } for (i = 0; i ; i++) { printf("%d", output[i]); } printf("\n"); } ``` 3. 操作系统任务调度问题: * 知识点:操作系统、任务调度 该...