|
发表于 2020-3-5 19:35:19
|
显示全部楼层
我用VC6.0看了下汇编代码
printf函数是从右往左进行操作的,你会发现int i 之后,你直接i++,还有i+5,你都没有对i初始化,当然各种值都有可能
- 27: printf("%d %d %d",i=1,i+5,i++);
- 0040F4B8 8B 45 FC mov eax,dword ptr [ebp-4]
- 0040F4BB 89 45 F8 mov dword ptr [ebp-8],eax
- 0040F4BE 8B 4D F8 mov ecx,dword ptr [ebp-8]
- 0040F4C1 51 push ecx
- 0040F4C2 8B 55 FC mov edx,dword ptr [ebp-4]
- 0040F4C5 83 C2 05 add edx,5
- 0040F4C8 52 push edx
- 0040F4C9 C7 45 FC 01 00 00 00 mov dword ptr [ebp-4],1
- 0040F4D0 8B 45 FC mov eax,dword ptr [ebp-4]
- 0040F4D3 50 push eax
- 0040F4D4 68 AC 2F 42 00 push offset string "%d %d %d" (00422fac)
复制代码 |
|