【C语言】关于i++和++i的又一个话题
#include<stdio.h> main() { int count=0; printf("%d %d %d\n",count++,count++,count++); printf("%d %d %d\n",++count,++count,++count); return 0; } /* 0 0 0 6 5 4 */
为啥?请看Disassembly:
4: int count=0; 00401028 mov dword ptr [ebp-4],0 5: printf("%d %d %d\n",count++,count++,count++); 0040102F mov eax,dword ptr [ebp-4] 00401032 mov dword ptr [ebp-8],eax 00401035 mov ecx,dword ptr [ebp-8] 00401038 push ecx 00401039 mov edx,dword ptr [ebp-4] 0040103C mov dword ptr [ebp-0Ch],edx 0040103F mov eax,dword ptr [ebp-0Ch] 00401042 push eax 00401043 mov ecx,dword ptr [ebp-4] 00401046 mov dword ptr [ebp-10h],ecx 00401049 mov edx,dword ptr [ebp-10h] 0040104C push edx 0040104D push offset string "%d %d %d\n" (0042001c) 00401052 mov eax,dword ptr [ebp-4] 00401055 add eax,1 00401058 mov dword ptr [ebp-4],eax 0040105B mov ecx,dword ptr [ebp-4] 0040105E add ecx,1 00401061 mov dword ptr [ebp-4],ecx 00401064 mov edx,dword ptr [ebp-4] 00401067 add edx,1 0040106A mov dword ptr [ebp-4],edx 0040106D call printf (004010f0) 00401072 add esp,10h 6: printf("%d %d %d\n",++count,++count,++count); 00401075 mov eax,dword ptr [ebp-4] 00401078 add eax,1 0040107B mov dword ptr [ebp-4],eax 0040107E mov ecx,dword ptr [ebp-4] 00401081 push ecx 00401082 mov edx,dword ptr [ebp-4] 00401085 add edx,1 00401088 mov dword ptr [ebp-4],edx 0040108B mov eax,dword ptr [ebp-4] 0040108E push eax 0040108F mov ecx,dword ptr [ebp-4] 00401092 add ecx,1 00401095 mov dword ptr [ebp-4],ecx 00401098 mov edx,dword ptr [ebp-4] 0040109B push edx 0040109C push offset string "%d %d %d\n" (0042001c) 004010A1 call printf (004010f0) 004010A6 add esp,10h 7: return 0;
# |
|
= |
---|---|---|
南柯 | 2023 | |
cxlove | 1970 | |
vainner | 1763 | |
4 | 1000310428赵成帅 | 1718 |
5 | XiaoWen | 1710 |
6 | 1000380213洪伟焕 | 1701 |
7 | weiben | 1684 |
8 | Jungle.Wei | 1678 |
9 | 1100310131曾翔宇 | 1664 |
10 | hongwh | 1653 |
dfs
21
implementation
19
dp
13
string
11
math
11
big number
10
number theory
9
combinatorics
9
happyoj
5
springboot
4
brute force
4
如梦令
3
javascript
3
greedy
3
bfs
3
sortings
2
xor
2
linux
2
data structures
2
Copilot
2
graph
2
divide and conquer
2
probabilities
2
cron
1
docker
1
https
1
jquery
1
telnetlib
1
css
1
OJ源码
1