首页 > > > C++中一个简单又复杂的问题:++i+=i++
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/ ,如需转载,请注明出处,否则将追究法律责任。