免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1374 | 回复: 3
打印 上一主题 下一主题

大家看我的这几行c代码,分析一下我的输出结果?谢谢了。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-12 20:32 |只看该作者 |倒序浏览
#include <stdio.h>;
int main()
{
int a,b,c1,c2,c3,c4;
a=10;
b=100;
c1=a---b;
c2=a -- - b;
c3=a - -- b;
c4=a-- - b;
printf("\n***************************************";
printf("\n a---b is %d",c1);
printf("\n a -- - b is %d",c2);
printf("\n a - -- b is %d",c3);
printf("\n a-- - b is %d",c4);
printf("\n***************************************";
return 0 ;
}

输出结果:
***************************************
a---b is -90
a -- - b is -91
a - -- b is -91
a-- - b is -91
***************************************

注:c1的结果我清楚,c2,c3,c4,我弄糊涂了。

论坛徽章:
0
2 [报告]
发表于 2005-04-12 21:39 |只看该作者

大家看我的这几行c代码,分析一下我的输出结果?谢谢了。

"--"是从右向左接合的原因吧?

论坛徽章:
0
3 [报告]
发表于 2005-04-12 22:02 |只看该作者

大家看我的这几行c代码,分析一下我的输出结果?谢谢了。

察看其反汇编代码:
  1. 5:    a=10;
  2. 00401028   mov         dword ptr [ebp-4],0Ah
  3. 6:    b=100;
  4. 0040102F   mov         dword ptr [ebp-8],64h
  5. 7:    c1=a---b;
  6. 00401036   mov         eax,dword ptr [ebp-4]
  7. 00401039   sub          eax,dword ptr [ebp-8]        /*做减法*/
  8. 0040103C   mov         dword ptr [ebp-0Ch],eax
  9. 0040103F   mov         ecx,dword ptr [ebp-4]
  10. 00401042   sub          ecx,1                                   /*a自减1*/
  11. 00401045   mov         dword ptr [ebp-4],ecx
  12. 8:    c2=a -- - b;                                                    /*同上*/
  13. 00401048   mov         edx,dword ptr [ebp-4]
  14. 0040104B   sub         edx,dword ptr [ebp-8]
  15. 0040104E   mov         dword ptr [ebp-10h],edx
  16. 00401051   mov         eax,dword ptr [ebp-4]
  17. 00401054   sub         eax,1
  18. 00401057   mov         dword ptr [ebp-4],eax
  19. 9:    c3=a - -- b;
  20. 0040105A   mov         ecx,dword ptr [ebp-8]   
  21. 0040105D   sub         ecx,1                                   /*首先b自减1*/
  22. 00401060   mov         dword ptr [ebp-8],ecx
  23. 00401063   mov         edx,dword ptr [ebp-4]
  24. 00401066   sub         edx,dword ptr [ebp-8]        /*做减法*/
  25. 00401069   mov         dword ptr [ebp-14h],edx
  26. 10:   c4=a-- - b;                                                    /*同7*/
  27. 0040106C   mov         eax,dword ptr [ebp-4]
  28. 0040106F   sub         eax,dword ptr [ebp-8]
  29. 00401072   mov         dword ptr [ebp-18h],eax
  30. 00401075   mov         ecx,dword ptr [ebp-4]
  31. 00401078   sub         ecx,1
  32. 0040107B   mov         dword ptr [ebp-4],ecx
  33. 11:   printf("\n***************************************");
复制代码



看此贴:
http://bbs.chinaunix.net/forum/v ... ;highlight=kernelxu

论坛徽章:
0
4 [报告]
发表于 2005-04-13 20:29 |只看该作者

大家看我的这几行c代码,分析一下我的输出结果?谢谢了。

我个人分析是这样的:

c1=a---b    相当于 c1=a-b; a—;
c2=a -- - b 相当于 c2=a-b;  a--;
c3=a - -- b 相当于 --b;c3=a-b;
c4=a-- - b; 相当于 c4=a-b;a--;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP