ITPub博客

首页 > > > C++中一个简单又复杂的问题:++i+=i++

C++中一个简单又复杂的问题:++i+=i++

作者:mex 时间:2019-10-21 14:24:51 0 删除 编辑

i=1;

++i+=i++;

执行完后i=5!

 

问题关键:

1、复合赋值操作++i只做了一次左操作数

2、i++执行完后返回i原值的副本,在一条语句结束后才完成自增?

3、复合赋值赋值操作的执行顺序是什么样的?先右后左还是根据编译器而异?

 

vs中的反汇编代码:

(++i)+=i++;

00CC14F0  mov         eax,dword ptr [i]

00CC14F3  add         eax,1

00CC14F6  mov         dword ptr [i],eax

00CC14F9  mov         ecx,dword ptr [i]

00CC14FC  add         ecx,dword ptr [i]

00CC14FF  mov         dword ptr [i],ecx

00CC1502  mov         edx,dword ptr [i]

00CC1505  add         edx,1

00CC1508  mov         dword ptr [i],edx

求解释~

 

语句的具体执行过程是什么样的?还有以上的一些问题

求高手解答!!!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3932/viewspace-3146229/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-09

  • 博文量
    193
  • 访问量
    1886