探究++a与a++的区别到底在哪

 时间:2024-10-28 14:58:26

1、先来看看要研究的代码,很简单的。

探究++a与a++的区别到底在哪

3、Debug模式下的反汇编,很简单很清晰。下面来进行分析:int a=5,b=0,c=0,d=0;下面的图片是变量初始化代码,可以看到局部变量存储空间都是开辟在栈中的。

探究++a与a++的区别到底在哪

5、下面来看看b=++a运行过程。在反汇编界面,单步调试到第17行的过程中可以看到变量a和变量b的变化,以及寄存器窗口中eax寄存器的变化。从反汇编代码中可以看到b=++a的运行方式与我们想的一样,给变量a加上1后直接赋值给了b。

探究++a与a++的区别到底在哪

6、看看c=a++的运行过程。可以看到,先将a的值也就是6保存在eax寄存器中,然后将a的值加1,此时a已经是7了。但是赋给c的值却不是a,而是eax寄存器保存的值,也就是6。在反汇编界面进行单步调试时,要注意变量a和c的变化,尤其是eax和edx寄存器的变化。反汇编代码中要注意第20行,注意到底是谁的值赋值给了c。

探究++a与a++的区别到底在哪

7、看看d=a的运行过程。图片中说的比较清楚了。

探究++a与a++的区别到底在哪

8、看看最终运行的结果:a==7b==6c==6d==7显然c的值并不是b的值加1。这里反应出了++a和a++的区别。

探究++a与a++的区别到底在哪
  • Word软件如何画蓝色马克杯?
  • 精益生产案例分析 打破生产瓶颈
  • 元旦的来历和象征意义
  • 职场里如何发挥自己的创造力?
  • 怎样区分使用排列组合公式
  • 热门搜索
    企鹅生活在哪里 小米如何截屏 如何正确减肥 水星路由器怎么设置 如何培养学生的学习兴趣 马尔代夫旅游攻略 黑头导出液怎么用 怎么要账的方法最好 怎么解锁手机图案 海南文昌旅游