关于c中的++运算符
时间:2010-10-25 来源:王晓营
#include<iostream> using namespace std; int main() { int m=1,n=2; n=--m&n++; cout<<n<<endl; n=++m|n++; cout<<n<<endl; return 1; }
输出的结果是1和2
后置的++运算符是在赋值运算符执行后才进行的自加运算?
查看了生成的汇编代码
6: n=--m&n++;
00401586 mov eax,dword ptr [ebp-4]
00401589 sub eax,1
0040158C mov dword ptr [ebp-4],eax
0040158F mov ecx,dword ptr [ebp-4]
00401592 and ecx,dword ptr [ebp-8]
00401595 mov dword ptr [ebp-8],ecx
00401598 mov edx,dword ptr [ebp-8]
0040159B add edx,1
0040159E mov dword ptr [ebp-8],edx
7: n=++m|n++;
004015A1 mov eax,dword ptr [ebp-4]
004015A4 add eax,1
004015A7 mov dword ptr [ebp-4],eax
004015AA mov ecx,dword ptr [ebp-4]
004015AD or ecx,dword ptr [ebp-8]
004015B0 mov dword ptr [ebp-8],ecx
004015B3 mov edx,dword ptr [ebp-8]
004015B6 add edx,1
004015B9 mov dword ptr [ebp-8],edx
n=--m&n++等价于
--m;
n=m&n;
n++;
C/C++中后置++,--的操作与C#不同,C#的运行结果是0和1