|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
void main()
{
int i = 5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",i,j,p,q);
}
答案分别是 8 8 15 22
明白为什么是15 不明白其他三个
- int i = 5, j = 5, p, q;
- 01014D3E C7 45 F8 05 00 00 00 mov dword ptr [i],5
- 01014D45 C7 45 EC 05 00 00 00 mov dword ptr [j],5
- p = (i++) + (i++) + (i++);
- 01014D4C 8B 45 F8 mov eax,dword ptr [i]
- 01014D4F 03 45 F8 add eax,dword ptr [i]
- 01014D52 03 45 F8 add eax,dword ptr [i]
- 01014D55 89 45 E0 mov dword ptr [p],eax
- 01014D58 8B 4D F8 mov ecx,dword ptr [i]
- 01014D5B 83 C1 01 add ecx,1
- 01014D5E 89 4D F8 mov dword ptr [i],ecx
- 01014D61 8B 55 F8 mov edx,dword ptr [i]
- 01014D64 83 C2 01 add edx,1
- 01014D67 89 55 F8 mov dword ptr [i],edx
- 01014D6A 8B 45 F8 mov eax,dword ptr [i]
- 01014D6D 83 C0 01 add eax,1
- 01014D70 89 45 F8 mov dword ptr [i],eax
- q = (++j) + (++j) + (++j);
- 01014D73 8B 45 EC mov eax,dword ptr [j]
- 01014D76 83 C0 01 add eax,1
- 01014D79 89 45 EC mov dword ptr [j],eax
- 01014D7C 8B 4D EC mov ecx,dword ptr [j]
- 01014D7F 83 C1 01 add ecx,1
- 01014D82 89 4D EC mov dword ptr [j],ecx
- 01014D85 8B 55 EC mov edx,dword ptr [j]
- 01014D88 83 C2 01 add edx,1
- 01014D8B 89 55 EC mov dword ptr [j],edx
- 01014D8E 8B 45 EC mov eax,dword ptr [j]
- 01014D91 03 45 EC add eax,dword ptr [j]
- 01014D94 03 45 EC add eax,dword ptr [j]
- 01014D97 89 45 D4 mov dword ptr [q],eax
复制代码
也就是说,我的编译器是这样做的
- p = i + i + i;
- i += 1;
- i += 1;
- i += 1;
- j += 1;
- j += 1;
- j += 1;
- q = j + j + j;
复制代码
- #include <stdio.h>
- int main(void)
- {
- {
- int i = 5, j = 5, p, q;
- p = (i++) + (i++) + (i++);
- q = (++j) + (++j) + (++j);
- printf("%d,%d,%d,%d\n", i, j, p, q);
- }
- {
- int i = 5, j = 5, p, q;
-
- p = i + i + i;
- i += 1;
- i += 1;
- i += 1;
- j += 1;
- j += 1;
- j += 1;
- q = j + j + j;
- printf("%d,%d,%d,%d\n", i, j, p, q);
- }
- return 0;
- }
复制代码
- #include <stdio.h>
- int main(void)
- {
- int i = 5, j = 5, p, q;
- p = (i++) + (i++) + (i++);
- q = (++j) + (++j) + (++j);
- printf("%d,%d,%d,%d", i, j, p, q);
- return 0;
- }
复制代码
|
|