c语言中++--的问题

萌新,想问问程序中关于++--的五个式子从左边开始计算,结果为什么不是45555?感谢您的帮助。

img

img

#include <iostream>
#include <algorithm>
using namespace std;
#pragma warning(disable:4996)
int main() {
00F91810  push        ebp  
00F91811  mov         ebp,esp  
00F91813  sub         esp,0D4h  
00F91819  push        ebx  
00F9181A  push        esi  
00F9181B  push        edi  
00F9181C  lea         edi,[ebp-0D4h]  
00F91822  mov         ecx,35h  
00F91827  mov         eax,0CCCCCCCCh  
00F9182C  rep stos    dword ptr es:[edi]  
    int i = 5;
00F9182E  mov         dword ptr [i],5  
    printf("%d%d%d%d%d", --i, ++i, i++, --i, i++);
00F91835  mov         eax,dword ptr [i]  
00F91838  mov         dword ptr [ebp-0D0h],eax  
00F9183E  mov         ecx,dword ptr [i]  
00F91841  add         ecx,1  
00F91844  mov         dword ptr [i],ecx  
00F91847  mov         edx,dword ptr [i]  
00F9184A  sub         edx,1  
00F9184D  mov         dword ptr [i],edx  
00F91850  mov         eax,dword ptr [i]  
00F91853  mov         dword ptr [ebp-0D4h],eax  
00F91859  mov         ecx,dword ptr [i]  
00F9185C  add         ecx,1  
00F9185F  mov         dword ptr [i],ecx  
00F91862  mov         edx,dword ptr [i]  
00F91865  add         edx,1  
00F91868  mov         dword ptr [i],edx  
00F9186B  mov         eax,dword ptr [i]  
00F9186E  sub         eax,1  
00F91871  mov         dword ptr [i],eax  
00F91874  mov         ecx,dword ptr [ebp-0D0h]  
00F9187A  push        ecx  
00F9187B  mov         edx,dword ptr [i]  
00F9187E  push        edx  
00F9187F  mov         eax,dword ptr [ebp-0D4h]  
00F91885  push        eax  
00F91886  mov         ecx,dword ptr [i]  
00F91889  push        ecx  
00F9188A  mov         edx,dword ptr [i]  
00F9188D  push        edx  
00F9188E  push        offset string "%d%d%d%d%d" (0F96B30h)  
00F91893  call        _printf (0F91320h)  
00F91898  add         esp,18h  
}

Debug一顿就知道了。