看看这个代码

来源:百度知道 编辑:UC知道 时间:2024/06/09 13:00:03
#include <iostream.h>

int a[] = {1,2,34,67,56,56};
int b = 10;

main()
{
int i;

int *p = &b;
int &q = *p;
q++;
q++;
cout<<q++<<b++<<*p;
}

运行的结果值为什么是: 131212

最后一句先计算
*p得12
然后计算
b++,返回值为12,b的值为13
再计算
q++,返回值为13,q(相当于b)的值为14
最后打印,所以结果如你所说
下面是汇编代码,我加了个endl.........

14: cout<<q++<<b++<<*p<<endl;
0040107F push offset @ILT+10(endl) (0040100f)
00401084 mov ecx,dword ptr [ebp-8]
00401087 mov edx,dword ptr [ecx]
00401089 push edx
0040108A mov eax,[b (0042ad68)]
0040108F mov dword ptr [ebp-10h],eax
00401092 mov ecx,dword ptr [ebp-10h]
00401095 push ecx
00401096 mov edx,dword ptr [b (0042ad68)]
0040109C add edx,1
0040109F mov dword ptr [b (0042ad68)],edx
004010A5 mov eax,dword ptr [ebp-0Ch]
004010A8 mov ecx,dword ptr [eax]
004010AA mov dword ptr [ebp-14h],ecx
004010AD mov edx,dword ptr [ebp-14h]
004010B0 push edx
004010B1 mov e