CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

菜鸟菜问题

楼主jetcode(不能呼风唤雨却可顶天立地)2002-05-21 14:03:38 在 C/C++ / C语言 提问

哪位能解释一下为什么:5==a   比   a==5效率高?  
   
  谢谢!  
   
   
   
  =================================  
  ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★  
  ★☆☆☆☆☆☆☆只要决心成功失败永远不会将我击垮!☆☆☆☆☆☆☆★  
  ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★  
  问题点数:22、回复次数:9Top

1 楼fangrk(加把油,伙计!)回复于 2002-05-21 14:08:01 得分 0

没有听说过。Top

2 楼jimconrad(jimmy)回复于 2002-05-21 14:10:08 得分 5

是为了防止程序员不小心将   a==5   写成   a=5   引起的难以排查的错误!因为   5=a   再编译时刻就能被发现.Top

3 楼jetcode(不能呼风唤雨却可顶天立地)回复于 2002-05-21 14:47:19 得分 0

难道一点都不关效率的事吗?  
  我看过一篇文章,似乎确和效率有关的。Top

4 楼jetcode(不能呼风唤雨却可顶天立地)回复于 2002-05-21 15:07:18 得分 0

高手这么多难道就没人能回答这个问题?  
  :-<Top

5 楼jyc_nj(老蔣)回复于 2002-05-21 15:23:44 得分 2

jimconrad(jimmy)说的应该是唯一的原因.  
  VC6下反汇编后都是一样的,我想大多数编译器对这两句的处理都是一样的吧.Top

6 楼steedhorse(晨星)回复于 2002-05-21 15:23:44 得分 15

没有效率问题,看下面的源程序和该程序的反汇编代码就知道了:  
   
  //源程序:  
  #include   <iostream.h>  
   
  void   main()  
  {  
  int   a;  
  a   =   5;  
  if(5   ==   a)  
  cout   <<   "5   ==   a";  
  if(a   ==   5)  
  cout   <<   "a   ==   5";  
  }  
   
  //反汇编代码:  
  1:         #include   <iostream.h>  
  2:  
  3:         void   main()  
  4:         {  
  00401010       push                 ebp  
  00401011       mov                   ebp,esp  
  00401013       sub                   esp,44h  
  00401016       push                 ebx  
  00401017       push                 esi  
  00401018       push                 edi  
  00401019       lea                   edi,[ebp-44h]  
  0040101C       mov                   ecx,11h  
  00401021       mov                   eax,0CCCCCCCCh  
  00401026       rep   stos         dword   ptr   [edi]  
  5:                 int   a;  
  6:                 a   =   5;  
  00401028       mov                   dword   ptr   [ebp-4],5  
  7:                 if(5   ==   a);!!!!!!!!!!!!!!!!!!!!!!注意这里  
  0040102F       cmp                   dword   ptr   [ebp-4],5  
  00401033       jne                   main+34h   (00401044)  
  8:                         cout   <<   "5   ==   a";  
  00401035       push                 offset   string   "5   ==   a"   (00425024)  
  0040103A       mov                   ecx,offset   cout   (004289c0)  
  0040103F       call                 ostream::operator<<   (00401290)  
  9:                 if(a   ==   5);!!!!!!!!!!!!!!!!!!!!!!还有这里  
  00401044       cmp                   dword   ptr   [ebp-4],5  
  00401048       jne                   main+49h   (00401059)  
  10:                       cout   <<   "a   ==   5";  
  0040104A       push                 offset   string   "a   ==   5"   (0042501c)  
  0040104F       mov                   ecx,offset   cout   (004289c0)  
  00401054       call                 ostream::operator<<   (00401290)  
  11:       }  
  00401059       pop                   edi  
  0040105A       pop                   esi  
  0040105B       pop                   ebx  
  0040105C       add                   esp,44h  
  0040105F       cmp                   ebp,esp  
  00401061       call                 __chkesp   (004032a0)  
  00401066       mov                   esp,ebp  
  00401068       pop                   ebp  
  00401069       ret  
  Top

7 楼jetcode(不能呼风唤雨却可顶天立地)回复于 2002-05-21 15:24:51 得分 0

同志们,我的可用分确实不多啊。况且也不是很难的问题。  
  能解决的一定给分!!!  
  详细解释的一定加分!!!Top

8 楼jetcode(不能呼风唤雨却可顶天立地)回复于 2002-05-21 15:45:44 得分 0

非常感谢大家。  
  17:00前一定结分!!!Top

9 楼wangxj0600(闭门思过中)回复于 2002-05-21 17:14:54 得分 0

已经过了。Top

相关问题

  • 菜鸟
  • 菜鸟
  • 菜鸟
  • 菜鸟菜问!
  • 菜鸟菜问
  • 菜菜鸟问!
  • 菜鸟问题 (菜鸟问)
  • 菜鸟中菜鸟提问
  • 菜菜菜菜菜菜鸟问题
  • 菜鸟菜问题

关键词

  • 效率
  • ebp
  • edi
  • push
  • dword ptr
  • mov
  • main

得分解答快速导航

  • 帖主:jetcode
  • jimconrad
  • jyc_nj
  • steedhorse

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo