| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 247 人关注过本帖
标题:求助:关于C++自增自减问题
只看楼主 加入收藏
讷于言者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-25
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:2 
求助:关于C++自增自减问题
  
 以下程序结果为什么是这样??

{
  int a=10;
    cout<<a+ ++a<<endl;//输出22
    a=10;
    cout<<++a+ ++a<<endl;//输出24
  }
2012-11-25 17:10
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:2 
  cout<<a+ ++a<<endl;//输出22
001017CF  mov         eax,dword ptr [a]  
001017D2  add         eax,1  
001017D5  mov         dword ptr [a],eax  
001017D8  mov         esi,esp  
001017DA  mov         ecx,dword ptr [__imp_std::endl (1082A8h)]  
001017E0  push        ecx  
001017E1  mov         edx,dword ptr [a]  
001017E4  add         edx,dword ptr [a]  
001017E7  mov         edi,esp  
001017E9  push        edx  
001017EA  mov         ecx,dword ptr [__imp_std::cout (1082A4h)]  
001017F0  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (1082A0h)]  
001017F6  cmp         edi,esp  
001017F8  call        @ILT+320(__RTC_CheckEsp) (101145h)  
001017FD  mov         ecx,eax  
001017FF  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (10829Ch)]  
00101805  cmp         esi,esp  
00101807  call        @ILT+320(__RTC_CheckEsp) (101145h)  
  a=10;
0010180C  mov         dword ptr [a],0Ah  
  cout<<++a+ ++a<<endl;//输出24
00101813  mov         eax,dword ptr [a]  
00101816  add         eax,1  
00101819  mov         dword ptr [a],eax  
0010181C  mov         ecx,dword ptr [a]  
0010181F  add         ecx,1  
00101822  mov         dword ptr [a],ecx  
00101825  mov         esi,esp  
00101827  mov         edx,dword ptr [__imp_std::endl (1082A8h)]  
0010182D  push        edx  
0010182E  mov         eax,dword ptr [a]  
00101831  add         eax,dword ptr [a]  
00101834  mov         edi,esp  
00101836  push        eax  
00101837  mov         ecx,dword ptr [__imp_std::cout (1082A4h)]  
0010183D  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (1082A0h)]
用反汇编来说话

 cout<<a+ ++a<<endl;// ==》a++; cout<<a+a;所以22
cout<<++a+ ++a<<endl // ==>a++;a++;cout<< a+a


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-25 17:53
讷于言者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 2楼 yuccn
嗯,谢谢
2012-11-25 19:30
快速回复:求助:关于C++自增自减问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019435 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved