int a = 5, j = 0;
004113BE mov dword ptr [a],5
004113C5 mov dword ptr [j],0
j = (++a)+(++a)+(++a);
004113CC mov eax,dword ptr [a]
004113CF add eax,1
004113D2 mov dword ptr [a],eax
004113D5 mov ecx,dword ptr [a]
004113D8 add ecx,1
004113DB mov dword ptr [a],ecx
004113DE mov edx,dword ptr [a]
004113E1 add edx,1
004113E4 mov dword ptr [a],edx
004113E7 mov eax,dword ptr [a]
004113EA add eax,dword ptr [a]
004113ED add eax,dword ptr [a]
004113F0 mov dword ptr [j],eax
可以说等于22应该算是VC6 debug版的一个bug 不过也可以那么理解啊
以上是VS2008 debug版的汇编代码 结果等于24 是三个8加起来
004113BE mov dword ptr [a],5
004113C5 mov dword ptr [j],0
j = (++a)+(++a)+(++a);
004113CC mov eax,dword ptr [a]
004113CF add eax,1
004113D2 mov dword ptr [a],eax
004113D5 mov ecx,dword ptr [a]
004113D8 add ecx,1
004113DB mov dword ptr [a],ecx
004113DE mov edx,dword ptr [a]
004113E1 add edx,1
004113E4 mov dword ptr [a],edx
004113E7 mov eax,dword ptr [a]
004113EA add eax,dword ptr [a]
004113ED add eax,dword ptr [a]
004113F0 mov dword ptr [j],eax
可以说等于22应该算是VC6 debug版的一个bug 不过也可以那么理解啊
以上是VS2008 debug版的汇编代码 结果等于24 是三个8加起来