编程问题a=(i++)+(i++)+(i++) 假设i=1 那么输出时a和i分别是多少啊?

2025-03-24 03:56:08
推荐回答(4个)
回答1:

用VS2008 反汇编的结果如下:
int i=1;
00AD1DFE mov dword ptr [i],1
int a;
a = (i++) + (i++) + (i++);
00AD1E05 mov eax,dword ptr [i]
00AD1E08 add eax,dword ptr [i]
00AD1E0B add eax,dword ptr [i]
00AD1E0E mov dword ptr [a],eax //说明在计算a的时候用的最开始的值(1)
00AD1E11 mov ecx,dword ptr [i]
00AD1E14 add ecx,1
00AD1E17 mov dword ptr [i],ecx
00AD1E1A mov edx,dword ptr [i]
00AD1E1D add edx,1
00AD1E20 mov dword ptr [i],edx
00AD1E23 mov eax,dword ptr [i]
00AD1E26 add eax,1
00AD1E29 mov dword ptr [i],eax
cout << "a=" <

回答2:

a=i++;
相当于
a=i;
i ++;
三个的道理一样的.
所以c里面还给了另一种自加
a=++i;
相当于
i++;
a=i;

回答3:

i++都是在这语句之后完成递增的,无论语句多长。
++i是在语句之前完成递增的。

回答4:

++在变量后面,表示:先使用变量值i的值进行加法,然后再将i的值++