在C++中,++前置和++后置在运算符重载时,一个有使用临时对象,一个没(在前置++返回引用时),执行效率就产生了差异。听别人说C语言上也是这样。
于是我建了个.c文件查看代码的反汇编,但是我在看C++反汇编时,发现a++与++a只不过是在执行顺序和左值变量最终值不一样而已,请问这个为啥了?附上代码在VS2010的反汇编代码:
b = a++;
000D13AC mov eax,dword ptr [a]
000D13AF mov dword ptr [b],eax
000D13B2 mov ecx,dword ptr [a]
000D13B5 add ecx,1
000D13B8 mov dword ptr [a],ecx
a = ++b;
000D13BB mov eax,dword ptr [b]
000D13BE add eax,1
000D13C1 mov dword ptr [b],eax
000D13C4 mov ecx,dword ptr [b]
000D13C7 mov dword ptr [a],ecx
发现a++与++a只不过是在执行顺序和左值变量最终值不一样而已,请问这个为啥了?难度前置++和后置++在执行效率是一样的(但是从好多地方了解到,前置++效率高一些)?或是有其他什么原因,本人小白刚学C++,请大牛们明示