My compiler (VS2008, debug,x86) implements it thus:
Code:
main() { int i=3,j; j=i++ + i++; printf("%d %d",i,j); }
00063950 push ebp
00063951 mov ebp,esp
00063953 sub esp,0D8h
00063959 push ebx
0006395A push esi
0006395B push edi
0006395C lea edi,[ebp-0D8h]
00063962 mov ecx,36h
00063967 mov eax,0CCCCCCCCh
0006396C rep stos dword ptr es:[edi]
0006396E mov dword ptr [i],3
00063975 mov eax,dword ptr [i]
00063978 add eax,dword ptr [i]
0006397B mov dword ptr [j],eax
0006397E mov ecx,dword ptr [i]
00063981 add ecx,1
00063984 mov dword ptr [i],ecx
00063987 mov edx,dword ptr [i]
0006398A add edx,1
0006398D mov dword ptr [i],edx
00063990 mov esi,esp
00063992 mov eax,dword ptr [j]
00063995 push eax
00063996 mov ecx,dword ptr [i]
00063999 push ecx
0006399A push offset string "%d %d" (6573Ch)
0006399F call dword ptr [__imp__printf (68374h)]
000639A5 add esp,0Ch
000639A8 cmp esi,esp
000639AA call @ILT+335(__RTC_CheckEsp) (61154h)
000639AF xor eax,eax
000639B1 pop edi
000639B2 pop esi
000639B3 pop ebx
000639B4 add esp,0D8h
000639BA cmp ebp,esp
000639BC call @ILT+335(__RTC_CheckEsp) (61154h)
000639C1 mov esp,ebp
000639C3 pop ebp
000639C4 ret